РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
615 of 643 menu

Команда flask db migrate

Команда flask db migrate применяется к проекту Flask с настроенным расширением Flask-Migrate. Она сравнивает текущее состояние моделей с последней применённой миграцией и автоматически генерирует новый файл миграции. Первым параметром передаётся сообщение -m с описанием изменений. Команда не применяет миграцию к базе данных, а только создаёт её описание.

Синтаксис

flask db migrate [-m MESSAGE] [--rev-id REVISION] [--version-path PATH]

Пример

Давайте создадим простое приложение Flask с моделью и настроим 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

Теперь создадим первую миграцию на основе модели User:

flask db migrate -m "create user table"

Результат выполнения команды:

INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.autogenerate.compare] Detected added table 'user' Generating /migrations/versions/a1b2c3d4e5f6_create_user_table.py ... done

Пример

Давайте добавим новое поле email в модель User и создадим миграцию для этого изменения:

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)) email = db.Column(db.String(100))

Теперь сгенерируем миграцию для нового поля:

flask db migrate -m "add email to user"

Результат выполнения команды:

INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.autogenerate.compare] Detected added column 'user.email' Generating /migrations/versions/b2c3d4e5f6a7_add_email_to_user.py ... done

Смотрите также

  • команду flask db init,
    которая инициализирует миграции в проекте
  • команду flask db upgrade,
    которая применяет миграции к базе данных
  • команду flask db downgrade,
    которая откатывает миграции
  • команду flask db revision,
    которая создаёт пустую миграцию вручную
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить