Команда db init
Команда flask db init применяется в проекте Flask
с подключённым расширением Flask-Migrate. Она создаёт
служебную папку migrations, в которой будут
храниться файлы миграций и конфигурация Alembic. Команду
достаточно выполнить один раз при первом подключении
миграций к проекту. После этого можно создавать новые
миграции командой flask db migrate и применять их
командой flask db upgrade.
Синтаксис
flask db init
Пример
Пусть у нас есть приложение 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
Результат выполнения команды:
Creating directory /home/user/project/migrations ... done
Creating directory /home/user/project/migrations/versions ... done
Generating /home/user/project/migrations/alembic.ini ... done
Generating /home/user/project/migrations/README ... done
Generating /home/user/project/migrations/env.py ... done
Generating /home/user/project/migrations/script.py.mako ... done
После выполнения команды в корне проекта появится
папка migrations со следующей структурой:
migrations/
├── alembic.ini
├── env.py
├── README
├── script.py.mako
└── versions/
Пример
Если команда flask db init уже выполнялась ранее,
повторный запуск приведёт к ошибке:
flask db init
Результат выполнения команды:
Error: Directory migrations already exists and is not empty
В этом случае папку migrations нужно удалить,
если вы хотите начать работу с миграциями заново.
Смотрите также
-
команда
db migrate,
которая создаёт новую миграцию на основе моделей -
команда
db upgrade,
которая применяет миграции к базе данных -
команда
db revision,
которая создаёт пустую миграцию вручную -
команда
db current,
которая показывает текущую версию миграций