Flask-Migrate は SQLAlchemy のマイグレーションツール Alembic を Flask で使いやすくする拡張である。モデルの変更をデータベースに反映するための履歴管理ができる。
セットアップ
pip install 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)
初期化
マイグレーション環境を初期化する。
flask db init
これで migrations ディレクトリが作成される。このディレクトリはバージョン管理に含めること。
マイグレーションの作成
モデルを変更したら、マイグレーションファイルを生成する。
flask db migrate -m "Add email column to user"
-m オプションでコミットメッセージのようなコメントを付けられる。生成されたファイルは migrations/versions/ に保存される。
マイグレーションの適用
flask db upgrade
これでデータベースが最新の状態に更新される。
ロールバック
1つ前の状態に戻すには downgrade を使う。
flask db downgrade
主要なコマンド
| flask db init | マイグレーション環境の初期化 |
| flask db migrate | マイグレーションファイルの生成 |
| flask db upgrade | マイグレーションの適用 |
| flask db downgrade | 1つ前にロールバック |
| flask db history | マイグレーション履歴の表示 |
| flask db current | 現在のリビジョンを表示 |
注意点
自動生成されたマイグレーションファイルは、必ず内容を確認してから適用すること。特に以下の変更は自動検出されにくい。
テーブル名やカラム名の変更
制約の追加・削除
カラムの順序変更
これらは手動でマイグレーションファイルを編集する必要がある。