🔗 Миграции БД | Tooling
References
Достоинства
- Простое внедрение, работа с SQLAlchemy.
- Автоматическая генерация кода миграций на основе ORM-моделей.
- Возможность использования Python внутри кода с миграциями.
- Фиксация миграций в отдельной таблице
alembic_version
.
Недостатки
- Не фиксирует изменения имён таблиц и имён колонок (проверить в актуальной версии!)
Использование
Инициализация – создаст директорию ./alembic/
и файл ./alembic.ini
:
Как настроить с SQLModel – см. на TestDriven.
Далее, в файле alembic.ini
необходимо указать корректное подключение к БД в параметре sqlalchemy.url
. Для Postgres используем postgres://
, без asyncpg
. Там же прописать prepend_sys_path = ..
, чтобы при запуске кода ниже нашелся модуль app
. (Это не надо делать, если выполнять команду ниже из папки, где лежит alembic.ini
).
В файле ./alembic/env.py
, там где # for 'autogenerate' support
, прописать что-то типа:
Делаем первую миграцию. Для создания миграции, должно быть возможно соединение с БД, указанной в настройках!
В директории ./alembic/versions/
повится .py
-файл миграции.
Чтобы применить созданную миграцию, нужно выполнить:
Идентификатор последней примененной миграции будет в БД в таблице alembic_version
.
Чтобы откатиться, используем команду:
Если есть несколько “параллельных” миграций (например, от разных разработчиков при совместной разработке), их необходимо объединить командой:
Создастся ещё одна миграция для слияния параллельных веток. После этого, можно применить команду alembic upgrade head
.
Добавляем NON-NULL поле в заполненную таблицу
Используем следующий трюк в миграции:
📂 Tooling | Последнее изменение: 11.08.2024 09:08