Вопрос проверяет знание экосистемы инструментов работы с базой данных в Python и понимание, когда уместно использовать ORM, конструктор запросов или “чистый SQL”.
Помимо SQLAlchemy, в Python используют Django ORM, Tortoise ORM, Peewee, Gino, а также библиотеки для “чистого” SQL вроде psycopg, asyncpg или databases. ORM-решения выбирают, когда нужен удобный объектный слой и быстрая разработка. Лёгкие ORM и query builders — для небольших проектов или микросервисов. Чистый SQL предпочитают, когда важен полный контроль над запросами и максимальная производительность. Выбор зависит от стека (Django / FastAPI), синхронности/асинхронности и требований к сложности запросов.
SQLAlchemy — мощный и универсальный инструмент, но не единственный вариант для работы с базами данных. В разных проектах могут быть разные требования: асинхронность, лёгкость, тесная интеграция с фреймворком или, наоборот, минимум абстракций.
ORM, встроенные во фреймворки.
Лёгкие ORM / query builder’ы.
Чистый SQL-код поверх драйвера.
Используется в проектах на Django.
Особенности:
тесно интегрирована со всем фреймворком (миграции, admin, forms);
декларативные модели в models.py;
мощные QuerySet’ы.
Выбирают Django ORM когда:
проект целиком на Django;
нужны встроенные миграции, admin, экосистема;
не нужен отдельный ORM-слой, независимый от фреймворка.
Асинхронная ORM, вдохновлённая Django ORM.
Особенности:
ориентирована на async/await;
хорошо сочетается с FastAPI, aiohttp;
декларативные модели.
Выбирают, когда:
нужна асинхронная ORM;
стиль Django ORM нравится, но Django как фреймворк не нужен.
Лёгкая ORM, по сравнению с SQLAlchemy и Django ORM.
Плюсы:
простой API;
хороша для небольших сервисов и микросервисов;
меньше “магии”.
Выбирают Peewee, когда:
проект небольшой;
не нужна сверхгибкость SQLAlchemy;
хочется компактного и понятного ORM-слоя.
Асинхронная ORM для PostgreSQL.
Особенности:
использует SQLAlchemy Core под капотом;
заточена под async;
хорошо работает с FastAPI, aiohttp.
Иногда ORM вообще не нужна.
Примеры:
psycopg (синхронный PostgreSQL-клиент);
asyncpg (асинхронный PostgreSQL-клиент);
databases (async-friendly слой над SQL).
Выбирают, когда:
нужны сложные, высокооптимизированные SQL-запросы;
performance критичен;
доменная модель сложнее, чем ORM позволяет выразить удобно.
SQLAlchemy мощен, но:
может быть избыточен для очень маленьких сервисов;
лишняя сложность там, где нужен просто несколько SQL-запросов;
в “тяжёлых” ORM-проектах проще использовать Django ORM.
Альтернатива SQLAlchemy выбирается исходя из контекста:
Django → Django ORM;
лёгкий сервис → Peewee или “чистый SQL”;
асинхронные микросервисы → Tortoise ORM, Gino, asyncpg;
“низкоуровневый” контроль над SQL → прямой драйвер без ORM.
Нет “идеального” инструмента — важно выбирать под задачу.
Уровень
Рейтинг:
4
Сложность:
6
Навыки
Python
Postgres
Ключевые слова
Подпишись на Python Developer в телеграм