2010-11-01 28 views
10

Tôi đã sử dụng SQLObject trong một thời gian dài, nhưng nhận thấy rằng SQLAlchemy đã trở nên phổ biến hơn trong vài năm qua: http://www.google.com/trends?q=sqlobject,+sqlalchemyTôi có nên sử dụng SQLObject, SQLAlchemy hoặc SQLAlchemy + Elixir không?

Có lý do thuyết phục để chuyển sang SQLAlchemy không? Hiệu suất của nó liên quan đến SQLObject như thế nào? Tính khả dụng của nó? Và chi phí hiệu năng được thêm vào khi sử dụng Elixir là gì?

Nhu cầu của tôi là CRUD cơ bản, đơn giản. Không có gì lạ.

Tôi đã xem this related question nhưng đã được hỏi 1 năm trước và không có nhiều phản hồi.

Trả lời

10

Tôi đã sử dụng SqlObject rộng rãi như là một phần của TurboGears 0.9, nhưng chuyển sang SqlAlchemy + elixir như là một thay thế thả cho SqlObject ngay cả trước khi TurboGears đã làm.

Lưu ý rằng ngay cả khi không elixir, SQLAlchemy có riêng của nó định nghĩa lớp phong cách tường thuật: http://docs.sqlalchemy.org/en/rel_1_0/orm/extensions/declarative/index.html

Nếu bạn không chắc chắn về hiệu suất, nó không nên quá nhiều việc phải thả trong elixir như một sự thay thế trong ứng dụng của bạn và làm một số hồ sơ nhanh chóng. Tôi đoán rằng sự khác biệt hiệu suất giữa SqlObject/SQL/SQLA + elixir nhạt so với thời gian dành cho việc ghi và đọc dữ liệu đến/từ cơ sở dữ liệu.

Lưu ý rằng SqlAlchemy dành quyền kiểm soát lớn hơn nhiều đối với tải háo hức/lười biếng của relationshipscolumns, giúp hiệu suất bộ nhớ của ứng dụng của bạn trong nhiều trường hợp.

Có lẽ lý do thuyết phục nhất để chuyển đổi là SqlAlchemy là nó đang được tích cực phát triển (mặc dù tôi không biết quá nhiều về trạng thái dev của SqlObject nữa). Là một lý do thứ hai, bạn có thể yên tâm rằng nếu nhu cầu của bạn trở nên phức tạp hơn, có khả năng là có ai đó đã cố gắng đập các đối tượng Python vuông vào lỗ tròn của SQL thành công với SqlAlchemy.

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