Skip to main content

Миграции

Создание первой (пустой) миграции

alembic revision -m "Empty Init"

Обновление базы данных до текущей версии

alembic upgrade head

Хэш текущей миграции

alembic current

История миграций

alembic history

Возврат к предыдущему состоянию

alembic downgrade migration_id

Пропуск состояния

alembic stamp migration_id

Экспорт в формате sql 

alembic upgrade migration_id_start:migration_id_stop --sql > migration.sql

Автогенерация миграции

alembic revision --autogenerate -m "Added Cookie model"

Поддерживаемые и неподдерживаемые действия при автоматической миграции

Тип элемента Поддерживаемые Неподдерживаемые
Таблицы Добавление и удаление Изменение имени
Столбец Добавление, удаление, изменение нулевого статуса на столбце Изменение имени
Индекс Основные изменения в индексах и явно обозначенных уникальных ограничениях, поддержка автоматической генерации индексов
и уникальных ограничений

Ограничения
Ограничения без явного имени
Ключи Переименование
Типы
Типы, которые явно не поддерживаются базой данных

Ручное создание миграций

На примере изменения имени таблицы

  • Изменить имя.
  • Выполнить генерацию миграции
alembic revision -m "Renaming table"
  • В созданном файле изменить upgrade/downgrade
def upgrade():
    op.rename_table('old_name', 'new_name')
def downgrade():
    op.rename_table('new_name', 'old_name')
  • Выполнить миграцию
alembic upgrade head

Команды alembic

add_column Добавить столбец
alter_column Изменить тип столбца, имя или значение по-умолчанию
create_check_constraint Добавить ограничение
create_foreign_key Добавить внешний ключ
create_index Создать индекс
create_primary_key Создать основной ключ
create_table Создать таблицу
create_unique_constraint Создать ограничение уникальности
drop_column Удалить столбец
drop_constraint Удалить ограничение
drop_index Удалить индекс
drop_table Удалить таблицу
execute Выполнить сырую SQL команду
rename_table Переименовать таблицу