Команда flask db upgrade
Команда flask db upgrade применяется к проекту
Flask с настроенным расширением Flask-Migrate.
Она применяет все неприменённые миграции к базе
данных, обновляя её схему до указанной ревизии.
Без параметров команда обновляет базу до последней
доступной ревизии. Первым необязательным параметром
можно передать идентификатор ревизии, до которой
нужно обновить базу. Также поддерживается флаг
--sql для вывода SQL-запросов без их выполнения.
Синтаксис
flask db upgrade [revision] [options]
Пример
Давайте настроим 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"
Применяем миграцию к базе данных:
flask db upgrade
Результат выполнения команды:
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> a1b2c3d4e5f6, create user table
Пример
Давайте обновим базу данных до конкретной ревизии по её идентификатору:
flask db upgrade a1b2c3d4e5f6
Результат выполнения команды:
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> a1b2c3d4e5f6, create user table
Пример
Давайте посмотрим SQL-запросы, которые будут выполнены при обновлении, без их применения:
flask db upgrade --sql
Результат выполнения команды:
-- Running upgrade -> a1b2c3d4e5f6
CREATE TABLE user (
id INTEGER NOT NULL,
name VARCHAR(50),
PRIMARY KEY (id)
);
INSERT INTO alembic_version (version_num) VALUES ('a1b2c3d4e5f6');
Смотрите также
-
команду
flask db migrate,
которая создаёт новую миграцию -
команду
flask db downgrade,
которая откатывает миграции назад -
команду
flask db init,
которая инициализирует хранилище миграций -
команду
flask db current,
которая показывает текущую ревизию базы