Команда db merge
Команда flask db merge применяется для слияния
разошедшихся веток миграций в единую ревизию.
Такая ситуация возникает, когда над проектом работает
несколько разработчиков и каждый создаёт свои ревизии
от общей родительской точки. Первым параметром
передаётся идентификатор ревизии, к которой нужно
присоединить другие ветки. Дополнительными
позиционными аргументами передаются идентификаторы
ревизий, которые следует объединить. Команда создаёт
новый файл миграции, в котором перечислены все
сливаемые ревизии, и делает его текущей головой.
Синтаксис
flask db merge [OPTIONS] REVISION [REVISIONS]...
Пример
Давайте рассмотрим типичную ситуацию. Есть две ветки
миграций с головами 'abcde' и '12345',
которые нужно объединить. Сначала посмотрим текущее
состояние:
flask db heads
Результат выполнения команды:
abcde (head)
12345 (head)
Теперь объединим обе головы в одну ревизию слияния:
flask db merge abcde 12345
Результат выполнения команды:
Generating /migrations/versions/67890_merge.py ... done
После этого в каталоге migrations/versions появится
новый файл слияния. Проверим головы ещё раз:
flask db heads
Результат выполнения команды:
67890 (head)
Пример
Давайте посмотрим содержимое созданного файла слияния:
"""merge abcde and 12345
Revision ID: 67890
Revises: abcde, 12345
Create Date: 2024-01-01 00:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
revision = '67890'
down_revision = ('abcde', '12345')
branch_labels = None
depends_on = None
def upgrade():
pass
def downgrade():
pass
Обратите внимание на параметр down_revision: он
содержит кортеж из идентификаторов сливаемых ревизий.
Функции upgrade и downgrade пустые, так как
сама по себе операция слияния не изменяет структуру
базы данных.
Пример
Применим миграцию слияния к базе данных:
flask db upgrade
Результат выполнения команды:
INFO [alembic.runtime.migration] Running upgrade abcde, 12345 -> 67890, merge abcde and 12345
Теперь история миграций линейна, и обе ветки объединены в одну общую точку.
Смотрите также
-
команду
db revision,
которая создаёт новую ревизию миграции -
команду
db upgrade,
которая применяет миграции к базе данных -
команду
db history,
которая показывает историю миграций -
команду
db migrate,
которая создаёт миграцию на основе изменений моделей