Команда flask db downgrade
Команда flask db downgrade применяется для отката миграций
базы данных. Она берёт текущую версию схемы и возвращает её
к предыдущей миграции, выполняя обратные операции из файла
миграции. Команда полезна, когда нужно отменить последние
изменения структуры таблиц. Первым необязательным параметром
передаётся идентификатор ревизии, к которой нужно откатиться.
Синтаксис
flask db downgrade [revision]
Без параметра команда откатывает базу на одну миграцию назад.
Если указать revision, откат произойдёт до этой ревизии.
Пример
Пусть в проекте уже настроен Flask-Migrate и создана одна миграция. Сначала применим её к базе данных:
flask db upgrade
Результат выполнения команды:
INFO [alembic.runtime.migration] Running upgrade -> 1a2b3c4d5e6f, create user table
Теперь откатим последнюю миграцию командой downgrade:
flask db downgrade
Результат выполнения команды:
INFO [alembic.runtime.migration] Running downgrade 1a2b3c4d5e6f -> , create user table
Таблица user будет удалена, а база вернётся к состоянию
до применения миграции.
Пример
Пусть в проекте созданы две миграции и обе применены. Откатимся сразу к первой, указав её идентификатор:
flask db downgrade 1a2b3c4d5e6f
Результат выполнения команды:
INFO [alembic.runtime.migration] Running downgrade 2b3c4d5e6f7a -> 1a2b3c4d5e6f, add email column
Вторая миграция будет отменена, а схема останется на версии первой миграции.
Пример
Пусть приложение Flask определено в файле app.py
и использует Flask-Migrate:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
Инициализируем миграции и создадим первую ревизию:
flask db init
flask db migrate -m "create user table"
Применим миграцию, а затем откатим её командой
downgrade:
flask db upgrade
flask db downgrade
Результат выполнения команды:
INFO [alembic.runtime.migration] Running downgrade 3c4d5e6f7a8b -> , create user table
Смотрите также
-
команду
flask db upgrade,
которая применяет миграции к базе данных -
команду
flask db migrate,
которая создаёт новую миграцию -
команду
flask db revision,
которая создаёт пустую ревизию вручную -
команду
flask db history,
которая показывает список всех миграций