Как происходит процесс миграции в SQLAlchemy 2.0?

Как можно автоматизировать создание миграций при деплое бота, используя SQLAlchemy 2.0.31? Можно ли использовать что-то похожее на `manage.py migrate` из Django для выполнения этой задачи через консоль, вместо написания кода каждый раз?
  • 30 июля 2024 г. 8:53
Ответы на вопрос 2
В SQLAlchemy 2.0 миграции проводятся с использованием библиотеки alembic, которая автоматически создает и применяет миграции в базе данных. 

Для автоматизации создания миграций при деплое бота можно использовать alembic в комбинации с CLI инструментом. Для этого нужно сначала создать файл alembic.ini, в котором указать настройки подключения к базе данных. Затем нужно создать папку с миграциями и инициализировать ее через команду `alembic init migrations`. Затем можно создать новую миграцию с помощью команды `alembic revision -m "название миграции"` и применить ее к базе данных командой `alembic upgrade head`.

Для удобства можно создать скрипт или Makefile, который будет автоматически создавать и применять миграции при деплое бота. Например, в Makefile можно добавить следующие команды:

```
deploy:
    python manage.py db migrate
    python manage.py db upgrade
```

Или при наличии скриптов на bash:

```bash
#!/bin/bash

alembic revision -m "new migration"
alembic upgrade head
```

Таким образом, при деплое бота достаточно будет запустить Makefile или скрипт, чтобы создать и применить миграции к базе данных.
В SQLAlchemy нет миграций, create_all это создание таблиц с нуля, обычно это требуется очень редко. Да и вообще, DDL запросы сами по себе очень редко вызываются внутри рабочего сервиса, это обычно делается извне. А для миграцию используют отдельную библиотеку Alembic.
Похожие вопросы