1
2

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って何?スキーマ管理やその活用方法をまとめてみた

Posted at

はじめに

このドキュメントは、SQLAlchemy と Alembic を使った開発における基本的な使い方や、できることを自分用にまとめた備忘録です。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

Python アプリケーションにおけるデータベース操作を柔軟かつ安全に行うための参考として記録しています。


1. SQLAlchemy とは

SQLAlchemy は Python の ORM(Object Relational Mapper)ライブラリであり、以下の特徴を持ちます:

  • Python クラスでデータベースのテーブル定義ができる
  • SQL を直接書かずにクエリが作成できる(ORM機能)
  • 必要に応じて生SQL文も実行可能
  • 複数のデータベース(SQLite, PostgreSQL, MySQL など)に対応

できること

  • データベースとの接続管理
  • モデル定義(テーブルを Python クラスで定義)
  • クエリの作成(session.query() など)
  • レコードの追加、更新、削除
  • トランザクション管理

参考文献


2. Alembic とは

Alembic は SQLAlchemy の開発チームが提供するマイグレーションツールです。DBスキーマのバージョン管理をコードベースで行えるのが特徴です。

できること

  • モデルの変更を差分として自動検出
  • マイグレーションスクリプトの自動生成
  • マイグレーション(upgrade/downgrade)の実行
  • 複数のマイグレーションバージョンの管理

参考文献


3. SQLAlchemy + Alembic を使うと何が便利になるか?

機能 説明
テーブル設計を Python で完結 SQL を書かずにテーブル作成が可能
スキーマ変更を追跡・管理できる Alembic によってマイグレーションが容易に
チーム開発でのスキーマ同期 DBの状態をコードで管理することで、環境ごとの差異を防げる
バージョンの巻き戻しも簡単 downgrade 機能により、以前の状態に戻せる

4. 具体的な開発フロー例

  1. モデル定義
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
  1. Alembic 初期化
alembic init alembic
  1. マイグレーションスクリプトの生成
alembic revision --autogenerate -m "create users table"
  1. マイグレーションの適用
alembic upgrade head
  1. コードの変更とマイグレーション
    モデルにカラムを追加→再度 autogenerate で差分検知→upgrade で適用

5. 補足:環境構築のポイント

  • alembic.ini ファイルで接続先データベースを設定
  • env.py ファイルで SQLAlchemy の Base を読み込ませる必要あり
  • Docker や CI/CD 環境にも組み込み可能

まとめ

SQLAlchemy と Alembic を使うことで、

  • Python コードでデータベース操作を完結できる
  • スキーマ変更をバージョン管理できる
  • チーム開発での DB 管理がしやすくなる

開発や運用での柔軟性・安全性が大きく向上します。DB設計・運用をコードで統一的に管理したいなら、SQLAlchemy + Alembic の組み合わせは非常に有効です!

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?