Должен ли я использовать SQLObject, SQLAlchemy или SQLAlchemy + Elixir? - PullRequest
11 голосов
/ 01 ноября 2010

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

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

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

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

1 Ответ

11 голосов
/ 03 ноября 2010

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

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

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

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

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

...