Сегодня поговорим про ORM в Python (для реляционных БД). Их, на удивление, не так уж и много.
Django ORM — простая, мощная, с миграциями, в меру адекватная, доступная возможность оптимизации запросов. Вот только не все проекты делаются на Django, а ради одной только ORM его тащить никто не станет, слишком уж много оверхеда.
SQLAlchemy — популярная, чертовски мощная, с возможностью максимального контроля за происходящим. Но не такая уж и простая в освоении и понимании, с некоторым набором неявных моментов под капотом.
Peewee — ORM легковесная и чертовски простая в освоении. Must have для маленьких проектов.
Pony ORM — ORM с онлайн конструктором моделей и некоторыми интересными подходами. Если честно, ни разу не использовал. Синтаксис на основе итераторов имеет свои особенности: писать запросы просто, а вот для того, чтобы сделать их не слишком прожорливыми к ресурсам, придётся приложить немало усилий. Если решите её освоить и испытать в бою — напишите мне свои впечатления, будет интересно узнать.
В общем, выбор ORM я делаю как-то так:
- Крупный web-проект — Django с его ORM и прочими плюшками. Третья версия None была переписана именно на Django ради ORM, многопоточности и webhook’ов.
- Что-то крупное вне web’а или web-проект среднего размера — SQLAlchemy.
- Небольшие проекты и прототипы — Peewee.