alembic
Alembicは、データベースの構造変更をバージョン管理し、変更履歴を記録・適用することで、開発環境から本番環境まで安全かつ効率的にデータベースの変更を管理・移行するSkill。
📜 元の英語説明(参考)
Manage database migrations with Alembic. Use when a user asks to version database schemas, create migration scripts, handle schema changes in production, or manage SQLAlchemy model migrations.
🇯🇵 日本人クリエイター向け解説
Alembicは、データベースの構造変更をバージョン管理し、変更履歴を記録・適用することで、開発環境から本番環境まで安全かつ効率的にデータベースの変更を管理・移行するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o alembic.zip https://jpskill.com/download/14623.zip && unzip -o alembic.zip && rm alembic.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/14623.zip -OutFile "$d\alembic.zip"; Expand-Archive "$d\alembic.zip" -DestinationPath $d -Force; ri "$d\alembic.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
alembic.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
alembicフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Alembic
概要
Alembic は SQLAlchemy のためのマイグレーションツールです。データベースのスキーマ変更をバージョン管理された Python スクリプトとして追跡します — データベース版の Git のようなものです。モデルの変更からの自動生成、ブランチング、およびデータマイグレーションをサポートします。
手順
ステップ 1: セットアップ
pip install alembic
alembic init alembic
# alembic/env.py — async SQLAlchemy での設定
from alembic import context
from sqlalchemy.ext.asyncio import create_async_engine
from models import Base
import asyncio
config = context.config
target_metadata = Base.metadata
def run_migrations_online():
connectable = create_async_engine(config.get_main_option("sqlalchemy.url"))
async def do_run():
async with connectable.connect() as connection:
await connection.run_sync(do_migrations)
def do_migrations(connection):
context.configure(connection=connection, target_metadata=target_metadata)
with context.begin_transaction():
context.run_migrations()
asyncio.run(do_run())
run_migrations_online()
ステップ 2: マイグレーションの作成
# モデルの変更から自動生成
alembic revision --autogenerate -m "add projects table"
# 空のマイグレーションの作成 (データマイグレーション用)
alembic revision -m "backfill user roles"
# alembic/versions/001_add_projects.py — 生成されたマイグレーション
def upgrade():
op.create_table('projects',
sa.Column('id', sa.String(36), primary_key=True),
sa.Column('name', sa.String(100), nullable=False),
sa.Column('owner_id', sa.String(36), sa.ForeignKey('users.id')),
sa.Column('created_at', sa.DateTime, server_default=sa.func.now()),
)
op.create_index('ix_projects_owner_id', 'projects', ['owner_id'])
def downgrade():
op.drop_index('ix_projects_owner_id')
op.drop_table('projects')
ステップ 3: データマイグレーション
# alembic/versions/002_backfill_roles.py — データマイグレーション
from alembic import op
import sqlalchemy as sa
def upgrade():
# カラムの追加
op.add_column('users', sa.Column('role', sa.String(20), server_default='member'))
# 既存の行のバックフィル
conn = op.get_bind()
conn.execute(sa.text("UPDATE users SET role = 'admin' WHERE email LIKE '%@mycompany.com'"))
def downgrade():
op.drop_column('users', 'role')
ステップ 4: コマンド
alembic upgrade head # 保留中のすべてのマイグレーションを適用
alembic downgrade -1 # 1つ前のマイグレーションにロールバック
alembic history # マイグレーション履歴を表示
alembic current # 現在のリビジョンを表示
alembic upgrade +1 # 次のマイグレーションのみを適用
ガイドライン
- 自動生成されたマイグレーションは常にレビューしてください — リネームが見逃されている可能性があります (drop+create として検出される)。
- デプロイ前に CI でマイグレーションを実行してください — スキーマの問題を早期にキャッチします。
- データマイグレーションは冪等であるべきです — 複数回実行しても安全であるように。
- SQLite では
op.batch_alter_table()を使用してください (ALTER TABLE をうまくサポートしていません)。 - 適用済みのマイグレーションは決して編集しないでください — 代わりに新しいマイグレーションを作成してください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Alembic
Overview
Alembic is the migration tool for SQLAlchemy. It tracks database schema changes as versioned Python scripts — like Git for your database. Supports autogeneration from model changes, branching, and data migrations.
Instructions
Step 1: Setup
pip install alembic
alembic init alembic
# alembic/env.py — Configure with async SQLAlchemy
from alembic import context
from sqlalchemy.ext.asyncio import create_async_engine
from models import Base
import asyncio
config = context.config
target_metadata = Base.metadata
def run_migrations_online():
connectable = create_async_engine(config.get_main_option("sqlalchemy.url"))
async def do_run():
async with connectable.connect() as connection:
await connection.run_sync(do_migrations)
def do_migrations(connection):
context.configure(connection=connection, target_metadata=target_metadata)
with context.begin_transaction():
context.run_migrations()
asyncio.run(do_run())
run_migrations_online()
Step 2: Create Migrations
# Auto-generate from model changes
alembic revision --autogenerate -m "add projects table"
# Create empty migration (for data migrations)
alembic revision -m "backfill user roles"
# alembic/versions/001_add_projects.py — Generated migration
def upgrade():
op.create_table('projects',
sa.Column('id', sa.String(36), primary_key=True),
sa.Column('name', sa.String(100), nullable=False),
sa.Column('owner_id', sa.String(36), sa.ForeignKey('users.id')),
sa.Column('created_at', sa.DateTime, server_default=sa.func.now()),
)
op.create_index('ix_projects_owner_id', 'projects', ['owner_id'])
def downgrade():
op.drop_index('ix_projects_owner_id')
op.drop_table('projects')
Step 3: Data Migrations
# alembic/versions/002_backfill_roles.py — Data migration
from alembic import op
import sqlalchemy as sa
def upgrade():
# Add column
op.add_column('users', sa.Column('role', sa.String(20), server_default='member'))
# Backfill existing rows
conn = op.get_bind()
conn.execute(sa.text("UPDATE users SET role = 'admin' WHERE email LIKE '%@mycompany.com'"))
def downgrade():
op.drop_column('users', 'role')
Step 4: Commands
alembic upgrade head # apply all pending migrations
alembic downgrade -1 # rollback one migration
alembic history # show migration history
alembic current # show current revision
alembic upgrade +1 # apply next migration only
Guidelines
- Always review autogenerated migrations — they may miss renames (detected as drop+create).
- Run migrations in CI before deploying — catch schema issues early.
- Data migrations should be idempotent — safe to run multiple times.
- Use
op.batch_alter_table()for SQLite (which doesn't support ALTER TABLE well). - Never edit applied migrations — create new ones instead.