Команды
Создание первой (пустой) миграции
alembic revision -m "Empty Init"
Обновление базы данных до текущей версии
alembic upgrade head
Хэш текущей миграции
alembic current
История миграций
alembic history
Возврат к предыдущему состоянию
alembic downgrade migration_id
Пропуск состояния
alembic stamp migration_id
Автогенерация миграции
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 | Переименовать таблицу |