ORM на Python: сравнение двух популярных систем | OTUS
⚡ Открываем подписку на курсы!
Проходите параллельно 3 онлайн-курса в месяц по цене одного.
Подробнее

Курсы

Программирование
iOS Разработчик. Продвинутый курс Программист 1С Реверс-инжиниринг. Продвинутый курс
-16%
Java Developer. Professional
-17%
JavaScript Developer. Professional
-18%
Flutter Mobile Developer
-15%
MS SQL Server Developer
-14%
Unity Game Developer. Basic
-19%
Супер-практикум по использованию и настройке GIT
-18%
Супер-интенсив "СУБД в высоконагруженных системах"
-18%
Web-разработчик на Python
-11%
Backend-разработчик на PHP
-8%
PostgreSQL
-10%
Базы данных
-19%
Android-разработчик. Базовый курс Разработчик Python. Продвинутый курс Разработчик на Spring Framework AWS для разработчиков Cloud Solution Architecture CI/CD Vue.js разработчик Разработчик Node.js Scala-разработчик Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Сравниваем две популярные ORM на Python

WebDev_Deep_LAST_25.07_3_Site.png

Две самые популярные ORM на Python – это SQLAlchemy и Django ORM. Давайте взглянем на их основные различия.

Разные подходы к отображению

Django ORM использует паттерн active record, а SQLAlchemydata mapper. Если коротко, то разница между этими подходами заключается в том, что active record подразумевает, что каждая строка в базе данных будет обёрнута в отдельный python-объект. А подход data mapper позволяет управлять этим отображением.

В целом ни один из этих подходов не хуже. У каждого есть свои сильные и слабые стороны. Например, подход active record проще для понимания и популярнее, а data mapper даёт больше возможностей.

Разная гибкость

Django ORM – часть фреймворка Django, которая позволяет очень просто делать определённое подмножество всех сайтов. Django ORM обладает теми же свойствами: более-менее типичные запросы на ней можно сделать очень легко. А вот со сложными запросами Django ORM не справится.

SQLAlchemy наоборот: позволяет создавать очень сложные запросы, но в среднем формирование запроса будет сложнее.

Чаще всего именно это приводит к необходимости использовать SQLAlchemy в проектах на Django: в некоторых местах нужно сделать особо сложные запросы, с которыми не справится Django ORM, поэтому именно в этих местах используют SQLAlchemy.

Размер сообщества

Django ORM нельзя использовать отдельно от Django, поэтому и сообщество ограничено пользователями Django.

С SQLAlchemy всё иначе: она не привязана к фреймворку и позволяет строить очень сложные запросы, что делает её очень популярной. На сегодняшний день сообщество SQLAlchemy – самое большое среди сообществ других ORM на Python.

Вместо вывода

Как видите, даже основные различия показывают, что Django ORM и SQLAlchemy – это два разных инструмента для разных целей, и противоборства между ними нет.

Есть вопрос? Напишите в комментариях!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться