Что это
SQLAlchemy — библиотека, через которую программа на Python работает с базой данных без ручных SQL-запросов на каждый шаг. Alembic — её спутник для миграций: меняет структуру таблиц по шагам и не теряет уже накопленные данные.
Как используем
В тикет-системе для IT-отдела 20 таблиц и 16 миграций Alembic, в интернет-магазине миграции применяются сами при старте API. Взятие заявки блокирует строку в базе, поэтому два администратора не возьмут одну и ту же.
Где это нужно бизнесу
- В боте или магазине копятся заказы, заявки и платежи, а функции продолжают добавляться — значит, будет меняться и структура базы.
- Несколько администраторов работают с одними записями одновременно.
Как мы это используем
- Тикет-система: MariaDB, 20 таблиц и 16 миграций Alembic. Взятие заявки блокирует строку, поэтому два администратора не возьмут одну и ту же.
- Интернет-магазин: SQLAlchemy 2 в асинхронном режиме, миграции Alembic применяются сами при старте API.
- ToshaMusic: миграции сверяются с моделями, чтобы схема и код не разошлись.
- Электронная очередь и финансовый ассистент: асинхронная SQLAlchemy поверх PostgreSQL, таблицы создаются при запуске.
Типичные проблемы
- Нет миграций — откат только из копии. В очереди и финансовом ассистенте схема создаётся при старте, и в ограничениях честно записано: откат версии — из копии базы.
- Синхронный доступ в асинхронном боте тормозит всех пользователей, поэтому драйверы асинхронные: aiomysql, asyncpg.
Когда это не нужно
Для бота с одной-двумя таблицами в SQLite хватает простых запросов, отдельный слой и миграции избыточны.