2009-06-20 27 views
8

Tôi đã xây dựng các ứng dụng cơ sở dữ liệu kinh doanh như tài chính, hàng tồn kho và các ứng dụng yêu cầu nghiệp vụ khác. Tôi đang lên kế hoạch chuyển sang Python. Điều gì sẽ là công cụ để bắt đầu với tốt nhất. Tôi sẽ cần phải làm chủ, hình thức giao dịch, xử lý (back end), báo cáo và loại điều đó. Cơ sở dữ liệu sẽ là postgress hoặc mysql. Vì tôi mới sử dụng Python, tôi hiểu rằng tôi cần bên cạnh Python ORM và cũng là một khung công tác. Ứng dụng của tôi không phải là một trang web liên quan nhưng nó cũng có thể cần phải được thực hiện trên web nếu cần thiết.Khuôn khổ và công cụ ứng dụng cơ sở dữ liệu Python

Cách chọn thiết lập kết hợp công cụ ban đầu?

Trả lời

4

Nếu tôi là bạn, tôi sẽ bắt đầu với django.

+3

+1: Nó có thể được đóng gói để chạy trên máy tính để bàn như thể nó là một ứng dụng độc lập. Google "Django Desktop" cho rất nhiều gợi ý. –

1

Khi Boudewijn Rempt viết here, "cách dễ nhất để tạo ứng dụng cơ sở dữ liệu [[NON-web]], bạn có thể muốn xem PyQt". Anh ấy đã viết điều này cách đây 6 năm, nhưng tôi nghĩ hôm nay cũng hoàn toàn đúng. mô-đun QtSql của pyqt4, đặc biệt, hỗ trợ MySQL, PostgreSQL và một số cơ sở dữ liệu khác.

1

Nếu ứng dụng của bạn cần làm việc cả trên máy tính để bàn và trên web trong tương lai, bạn có thể xem xét việc tạo ứng dụng dựa trên web với máy chủ phân phối. Những thứ như vậy là khá dễ dàng để làm với Python cả trong những cách tầm thường và trong những cách mạnh mẽ hơn như sử dụng Twisted.

Nếu máy tính để bàn chỉ là hướng của bạn, thì thực sự như Alex đã nói - đi cho PyQt. Nó thực sự dễ sử dụng và cung cấp khả năng GUI rất mạnh mẽ với các ràng buộc DB đa năng.

Đối với DB - bạn đã quen với việc sử dụng DB nào? Ví dụ, nếu bạn là một chuyên gia về MySQL, trước hết hãy kiểm tra các ràng buộc MySQL của Python. Đối với một ORM chắc chắn thử SQLAlchemy.

Có lẽ thêm chi tiết trong câu hỏi có thể giúp cung cấp câu trả lời đầy đủ hơn.


Thông tin chi tiết (đối với bình luận của bạn):

Nếu PostgreSQL là hướng của bạn, Python có PyGreSQL như một ràng buộc. Nó là mã nguồn mở, giống như Python, vì vậy bạn sẽ không gặp vấn đề gì với các ứng dụng miễn phí cho người dùng. Đối với Python là sự lựa chọn đúng, tôi nghĩ là vậy. Hãy xem xét rằng nhiều trang web mạnh mẽ chạy Python (YouTube, Reddit, ngay cả Google đối với một số ứng dụng). Python cũng được sử dụng trong một số ứng dụng có khối lượng lớn như hệ thống kiểm soát nguồn Mercurial và Bazaar, và người quản lý danh sách gửi thư.

+0

Vâng các kỹ năng hiện tại của tôi trong RDBMS là trong Oracle nhưng tôi đang lên kế hoạch sử dụng Postgress vì nó hỗ trợ các thủ tục phụ trợ. Bản chất của ứng dụng là các ứng dụng kinh doanh quy mô vừa và nhỏ. Nhưng tại thời điểm này, các ứng dụng này cũng được mong đợi là loại web. Nó sẽ được chủ yếu là lấy và thao tác dữ liệu. Chỉ cần thêm 1 câu hỏi nói chung ... Tôi hy vọng tôi không sai khi chọn Python vì tôi phải bắt đầu từ 0 nhưng tôi muốn phát triển các ứng dụng MIỄN PHÍ cho khách hàng. Ứng dụng hiếm khi có thể là máy tính để bàn nhưng chủ yếu là đa người dùng. –

0

chỉ FYI, đối với PyQT, sách có chương 15 với Cơ sở dữ liệu, Có vẻ tốt. và cuốn sách có thứ gì đó có dữ liệu và chế độ xem, v.v. Tôi đã đọc và tôi nghĩ nó xứng đáng với thời gian của bạn :)

11

Nếu tôi là bạn, trước tiên tôi có thể xem liệu giải pháp dựa trên web dựa trên Django có lừa. Nếu bạn cần một cái nhìn tốt hơn một chút, hãy thêm jQuery vào hỗn hợp. Nếu nó cung cấp cách chức năng quá ít, đi cho PyQt. Nếu bạn có nhiều ứng dụng rất nhỏ, hãy kết hợp các công nghệ. Dưới đây, bạn tìm thấy lý do của tôi (hơi dài) cho đề xuất này.

webapp vs ứng dụng desktop

Một năm trước, chúng tôi đã có một db kinh doanh và cần một front-end. Chúng tôi phải quyết định sử dụng công nghệ nào cho giao diện người dùng.Chúng tôi xem xét:

  1. PyQt
  2. dựa trên Web (xem here cho một tổng quan về web frame-công trình cho Python)

Những lợi thế cho PyQt từ quan điểm của chúng tôi:

  • Trải nghiệm C++ trước đây với Qt mà từ đó chúng tôi biết rằng Qt phù hợp cho công việc.
  • Tất cả các công cụ cần thiết được bao gồm.
  • Dễ dàng phát triển các ứng dụng khách phong phú.

Tuy nhiên, chúng tôi đã quyết định chống lại PyQt và giải pháp dựa trên web thay thế. Lý do là:

  • Các yêu cầu đối với front-end là khiêm tốn và dễ dàng để làm trong một trình duyệt (chủ yếu là báo cáo, một số hình thức để nhập dữ liệu hoặc chạy chức năng).
  • Triển khai ứng dụng (và các phiên bản mới, sửa lỗi, v.v.) dễ dàng hơn nhiều vì mọi thứ chỉ xảy ra trên máy chủ trong môi trường được kiểm soát.
  • Điều khiển truy cập/xác thực/quyền là "miễn phí" vì nó là một phần của máy chủ (trong trường hợp của chúng tôi Apache sử dụng Xác thực thư mục hoạt động) và trình duyệt, điều quan trọng đối với chúng tôi.
  • Ứng dụng cần kết nối máy chủ dù sao và không phải lưu trữ bất kỳ thứ gì ở phía khách hàng.

Tóm lại: giao diện người dùng giàu tính năng với nhiều chức năng trong môi trường triển khai được kiểm soát có thể dễ dàng triển khai hơn với Qt. Đối với các giao diện người dùng có trọng lượng nhẹ, giải pháp dựa trên máy chủ có vẻ tốt hơn đối với chúng tôi.

Khung web nào?

Bây giờ chúng tôi đã quyết định về một công nghệ, chúng tôi phải chọn một khuôn khổ. Chúng tôi nghiên cứu một chút, và nhìn hai lựa chọn thay thế một cách chi tiết:

  1. Django
  2. Một stack của phần mềm bao gồm CherryPy như điều phối (để phù hợp với yêu cầu http đến chức năng và tất cả những thứ liên quan), Mako như một khuôn mẫu thư viện để tạo các trang web, SQLAlchemy dưới dạng ORM và jQuery cho chức năng phía máy khách.

Chúng tôi đã đánh giá hai giải pháp thay thế và cuối cùng là giải pháp thay thế cho hai giải pháp thay thế. Quyết định này được thúc đẩy bởi các yêu cầu đầu cuối "ánh sáng nhẹ" thực sự của chúng tôi (rất nhiều ứng dụng rất nhỏ). Một chồng phần mềm - mà chúng tôi có thể trộn và kết hợp khi cần - dường như tốt hơn cho chúng tôi. Chúng ta có thể tái sử dụng SQLAlchemy trong các tình huống, nơi mà chúng ta không cần một web-front-end, chúng ta chỉ có thể sử dụng CherryPy mà không có một thư viện templating và một ORM, và cứ thế. Trong nhiều trường hợp khác, tôi tuy nhiên sẽ chọn Django trên ngăn xếp này.

Tóm lại:

  • một lớn, phức tạp ứng dụng -> PyQt
  • một bộ relativily tương tự, straigtforward báo cáo, biểu mẫu, vv với một look-and-feel -> Django
  • một bộ tương đối đa dạng về những thứ khác nhau về yêu cầu và công nghệ được sử dụng hoặc sử dụng lại một số công nghệ trong các trường hợp khác -> kết hợp công nghệ khi cần
+0

Stephan cảm ơn bài đăng đó. Tôi trường hợp của tôi các yêu cầu ở phía trước thường không phải là rất phức tạp. Tôi sẽ dành thời gian để đánh giá Django. –

0

Vì tôi không thích bất kỳ khung công tác nào, tôi quyết định tự viết một cái gì đó. Có thể bạn muốn xem Pylax. Nó được xây dựng trong GTK và sử dụng Python nhúng cho kịch bản. Phần phụ trợ là SQLite, bây giờ.

Các vấn đề liên quan