Должен ли я использовать SQLObject, SQLAlchemy или SQLAlchemy + Elixir?

Я долгое время использовал SQLObject, но заметил, что за последние пару лет SQLAlchemy стала намного более популярной: http://www.google.com/trends?q=sqlobject,+sqlalchemy

Есть ли веские причины для переключения на SQLAlchemy? Какова его производительность по сравнению с SQLObject? Его удобство использования? И какова дополнительная накладная производительность для использования Elixir?

Мои потребности - это простой, простой CRUD. Ничего экзотического.

Я видел этот связанный вопрос, но он был спрошен 1 год назад и не имел большого ответа.

Ответ 1

Я использовал SqlObject широко как часть TurboGears 0.9, но переключился на SqlAlchemy + эликсир как на замену для SqlObject еще до того, как TurboGears сделал.

Обратите внимание, что даже без эликсира SqlAlchemy имеет собственные определения класса декларативного стиля: http://docs.sqlalchemy.org/en/rel_1_0/orm/extensions/declarative/index.html

Если вы не уверены в производительности, не стоит слишком много работать, чтобы отказаться от использования эликсира в качестве замены в вашем приложении и быстро выполнить профилирование. Я предполагаю, что различия в производительности между SqlObject/SQL/SQLA + elixir бледнеют по сравнению с временем, потраченным на запись и чтение данных в/из базы данных.

Обратите внимание, что SqlAlchemy дает гораздо больший контроль над нетерпением/ленивой загрузкой relationships и , который помогает во многих случаях отслеживать объем памяти и производительность вашего приложения.

Вероятно, наиболее веская причина для переключения заключается в том, что SqlAlchemy заключается в том, что он активно развивается (хотя я уже не слишком много знаю о статусе dev в SqlObject). Как вторичная причина, вы можете быть уверены, что, если ваши потребности будут более сложными, вполне вероятно, что есть кто-то еще, кто уже пытался взломать квадратную привязку объектов Python в круглое отверстие SQL с помощью SqlAlchemy.