Выбор ОРМ для Python. SQLAlchemy

ORM (Object-Relational Mapping / Объектно-реляционное отображение) для Python


Суть проблемы: как только требуется сделать что-то поменше Django, сразу встает вопрос об ORM. ОРМ - это удобно, наглядно и легкоподдерживаемо. Куда более легко, чем голый SQL.

И тут перед программистом встает непростой выбор, на поверку оказывающийся очень простым: что использовать?

Django ORM ( а начинающие не всегда-то и знают, что это ORM, считая особенностью Джанги), строго говоря, можно использовать и без полноценного джанго-проекта. Не все равно расход времени на поддержание такого кода будет выше независимого решения.

Поэтому остается всего один вариант: SQLAlchemy.

Кроме него/нее есть легковесные PeeWee (более всего похожа на Джангу), PonyORM от отечественного производителя и ORM в web2py фреймворке.
(про SLQObject  тоже можно упомянуть, как и про еще рядок, но выводов это не меняет)

Но  все они имеют один, но существенный недостаток: миграции. С миграциями все нелегко.
make migrations / migrate как в Django в них сделать непросто.

Строго говоря, и в Алхимии с миграциями не все идеально, но широкая распространенность и поддержка сообщества (тот же Flask-SQLAlchemy) сглаживают этот недостаток.

Собственно, поэтому вопрос об альтернативе SQLAlchemy  не стоит.

Русскоязычные ресурсы:  материала довольно мало плюс устаревшие версии, но для быстрого старта читать в таком порядке:

http://ninjaside.info/blog/ru/orm-ispolzovanie-sqlalchemy/
https://solovyov.net/blog/2011/basic-sqlalchemy/
https://ru.wikibooks.org/wiki/SQLAlchemy

отличное краткое введение  - сравнение с Django
http://lucumr.pocoo.org/2011/7/19/sqlachemy-and-you/


Комментарии