SQLAlchemyの作者が作ったデータベースマイグレーションツール。個人的には、SQLAlchemyは使わないが、スキーマの作成に使っている。
モデル定義から自動作成
モデル定義から自動的にマイグレーションスクリプトを作成できる。前回からの変更分なども、現在のスキーマと比較して作成してくれる。ということで、モデル定義だけ変更すればあとはよしなにやってくれる。
プロジェクト作成コマンド
適応させたいプロジェクトのルートで実行する。
alembic init alembic
model のインポート
env.py
ファイルを使ってsqlalchemy
のmapsクラスをインポートして、テーブルの設定が読み込まれたBase.metadata
をtarget_metadata
に割り当てる。
import <Target Maps Package>
target_metadata = <Target Maps Package>.Base.metadata
設定ファイル
alembic.ini
にDBの設定を行う。
sqlalchemy.url = mysql://|username|:|password|@127.0.0.1:3306/|databasename|
Create Database
データベース作成スクリプトをenv.py
に追加する。
from sqlalchemy import create_engine
database_name = re.search('/([^/?]+)[^/]*$', config.get_section(config.config_ini_section)['sqlalchemy.url']).group(1)
connection_text = re.sub('/[^/]*$', '', config.get_section(config.config_ini_section)['sqlalchemy.url'])
engine = create_engine(connection_text)
conn = engine.connect()
conn.execute("create database if not exists %s" % (database_name))
マイグレーションスクリプトの作成
alembic revision --autogenerate -m "Init tables"
-m
の名前でマイグレーションスクリプトが自動で作成される。
マイグレーションの実行
alembic upgrade head
コメント