SQLAlchemyのマイグレーションツール Alembicを導入して効率的にモデルを管理しよう

SQLAlchemy を用いた際に Alembic というマイグレーションツールを使ったので、導入方法を紹介します。

SQLAlchemyではコマンドでの操作やAlter Tableなどは行えませんが、

Alembicではコマンドを用いたスキーマの操作やAlter Tableを行うことができ、便利です。

Alembic とは

SQLAlchemy を使用した データベースmigrationライブラリです。

環境

pipenv, version 2021.5.29

python 3.9.5

手順

  1. 必要なライブラリをインストール
  2. alembic環境を作成

  3. SQLAlchemyのモデルを作成

  4. migration スクリプトファイルをSQLAlchemyのモデルから自動で生成

1. 必要なライブラリをインストール

まずは下記ライブラリをインストールします。

pymysqlはドライバーに設定するためにインストールします。

2. alembic環境を作成

下記コマンドを実行するとalembic.iniファイルとalembicディレクトリ配下にファイルとディレクトリが生成されます。

alembic.ini

alembic スクリプトが呼び出された時に検索されるファイルです。

 

env.py

このファイルは alembic スクリプトが呼び出された時に起動する Python スクリプトです。
migrationするためのSQLAlchemy のEngine などの設定が書かれています。

 

script.py.mako

versions配下に生成される migration のスクリプトの Mako テンプレートファイルです。

 

versions/

このディレクトリ配下にmigrationファイルが生成されます。

3. DBの設定を記述したsetting.pyを作成

ここにDBの設定を記述し、EngineとBaseを定義します。

setting.py

4. SQLAlchemyのモデルを作成

setting.pyで定義したBaseを使用し、UserModelを作成します。

 

user.py

5. migration スクリプトファイルをSQLAlchemyのモデルから自動で生成

5-1. alembic.iniのDBのURLを変更

alembic.ini

※Databaseは各自の環境に合わせて設定してください。

5-2. env.pyにSQLAlchemyのモデルを読み込むように設定

env.pyにsetting.pyで定義したBaseをimportし、metadataに設定します。
UserModel は使いませんが 、import しないと Baseのmetadataにモデルが登録されず、

alembicでmigrationスクリプトファイルを作成した際に認識されないので注意が必要です。

 

env.py

5-3. alembic revision autogenerateコマンドを実行

versions/配下に下記のmigrationスクリプトファイルができます。

6. DBのテーブルにSQLAlchemyのモデルを反映

6-1. alembic upgrade headを実行

最後にalembic upgrade headを実行するとDBにSQLAlchemyのモデルがテーブルとして反映されます。

終わりに

SQLAlchemyだけでは、Alter Tableなどできないので、Alembicを導入するとより効率的にスキーマの操作ができるようになりました。今後、ぜひSQLAlchemyを使う際は取り入れていきたいです。

参考

https://alembic.sqlalchemy.org/en/latest/index.html



❏❏ TOPIC ❏❏ ------------------------------------------------------------

カスタム自由!フリーECサイトパッケージ
チャットボット導入サービス
WEBシステム開発・スマホアプリ開発はSRIAへ