0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Alembic コマンド早見表

Last updated at Posted at 2024-12-19

はじめに

PythonでORMライブラリを使用するときにSQLAlchemy + alembicの組み合わせが多いと思います。
過去新規アサインしたエンジニアが、alembicにてマイグレーションする方法が分からず、環境構築で止まっており、そのときにまとめた手順が好評だったため共有できればと思い記事を書きました。

Alembicとは

Alembicは、Pythonで書かれたデータベーススキーマのバージョン管理ツールです。
主にSQLAlchemyを使用したデータベースマイグレーションに利用されます。
このドキュメントでは、Alembicの基本的なコマンドとその使い方について説明します。

インストール

Alembicを使用するには、Pythonのパッケージマネージャーであるpipを使ってインストールします。

pip install alembic

セットアップ

Alembicの初期設定を行います。

alembic init <ディレクトリ名>

# 
# 例) alembic init alembic
#
# 以下ディレクトリとファイルが生成される
# alembic/
#   | - README
#   | - env.py
#   | - script.py.mako
#   | - versions/
# alembic.ini

生成されたディレクトリ内の alembic.ini ファイルを編集し、データベースの接続情報を設定します。

主要なコマンド

以下コマンド実行する場合は、alembic.iniと同じディレクトリ階層にて実行すること。

マイグレーションスクリプトの作成

新しいマイグレーションスクリプトを作成します。

alembic revision -m "マイグレーション名"

# 
# 例) alembic revision -m "add users table"
#
# 以下のマイグレーションファイルが生成される
# マイグレーション名の前にランダムな英数文字が入る
# alembic/
#   | - README
#   | - env.py
#   | - script.py.mako
#   | - versions/
#   |       | - 2f265898d6dd_add_users_table.py
# alembic.ini

マイグレーションバージョン一覧

作成したマイグレーションスクリプトのバージョン一覧を表示します。

alembic history

# 以下形式のバージョン一覧を確認できる
# 例)になるため実際のマイグレーションバージョン一覧とは異なります。
# 
# a2c7dc5d156b-> 2f265898d6dd (head), add users table
# <base> -> a2c7dc5d156b, maigration init

現在のステータス確認

現在のデータベースの状態や適用されていないマイグレーションを確認します。

alembic current

# 以下形式の現在の適用されているマイグレーションを確認できる
# 上記、マイグレーションバージョン一覧のadd users tableの英数字と値が一致するはずです。
# a2c7dc5d156b (head)

マイグレーションの実行

作成したマイグレーションスクリプトをデータベースに適用します。

alembic upgrade head

# headの場合、最新のマイグレーションが適用されます。
# 1つ上のマイグレーションを適用したい場合は、`alembic upgrade +1`を実行します。

マイグレーションの巻き戻し

直近のマイグレーションを取り消します。

alembic downgrade -1

# -1の場合、適用されているマイグレーションのひとつ前のマイグレーションが適用されます。
# 初期のマイグレーションを適用したい場合は、`alembic downgrade base`を実行します。

その他のコマンド

他にも様々なコマンドがあります。詳細は公式ドキュメントを参照してください。

注意事項

  • マイグレーションを他の開発者と共有する際は、コードレビューを行うことを推奨します。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?