Alembicで変更したテーブルのカラムを自動で検知してマイグレーションファイルを生成する

Alembicを使ってDBのマイグレーションを行っているけど、自動で変更されたカラム名を判定して勝手にmigrationファイルを作ってる

alembic revision --autogenerate -m "upgrade"

という–autogenerateというオプションが有るんだけど、そのままだと動作しない。

動作させるにはenv.pyを以下の様なコードを追記しないといけない。

env.py

# create_appはFlaskのappを返すメソッド
from basic_app import db, create_app

app = create_app()
config = context.config

app.config[“SQLALCHEMY_DATABASE_URI”] = "your_db_path"
config.set_main_option(“sqlalchemy.url”,app.config[“SQLALCHEMY_DATABASE_URI”])
target_metadata = db.metadata

あとは

alembic upgrade head

でデータベースに変更を適用するだけ。

とても便利なライブラリだけど、 注意点としてカラム名の変更やunique等、制約の追加を判定することはできないので 、その時は手動で更新しないといけない。

Related Contents

Pickup Contents