SQLAlchemy のマイグレーションライブラリ Alembic を使ってみる。

Python
スポンサーリンク

SQLAlchemyの作者が作ったデータベースマイグレーションツール。個人的には、SQLAlchemyは使わないが、スキーマの作成に使っている。

モデル定義から自動作成

モデル定義から自動的にマイグレーションスクリプトを作成できる。前回からの変更分なども、現在のスキーマと比較して作成してくれる。ということで、モデル定義だけ変更すればあとはよしなにやってくれる。

プロジェクト作成コマンド

適応させたいプロジェクトのルートで実行する。

alembic init alembic

model のインポート

env.pyファイルを使ってsqlalchemyのmapsクラスをインポートして、テーブルの設定が読み込まれたBase.metadatatarget_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

コメント

タイトルとURLをコピーしました