mcpField
S
sqlalchemy-postgres

sqlalchemy-postgres

github.com/cfircooデータ・データベース17501 回インストール31 週間前に更新
リポジトリ

sqlalchemy-postgres について

SQLAlchemy 2.0、Pydantic v2、Alembicを使ったPostgreSQLデータ層の構築を支援するスキルです。非同期アクセス、モデル、マイグレーション、クエリの設計指針を扱います。

主な機能

  1. 01SQLAlchemy 2.0の型付きORMパターン
  2. 02asyncpgによる非同期セッション
  3. 03Pydanticスキーマのマッピング
  4. 04Alembicのマイグレーション手順
  5. 05リポジトリとクエリの指針

活用シーン

  1. 01非同期PostgreSQLデータ層の構築
  2. 02ORMモデルとPydanticスキーマの定義
  3. 03Alembicマイグレーションの作成と管理
  4. 04CRUDとクエリパターンの実装

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cfircoo/claude-code-toolkit --skill sqlalchemy-postgres

インストール後、Claude Code で/sqlalchemy-postgresを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
async-patterns.md
best-practices.md
patterns.md
workflows/
create-migration.md
define-models.md
query-patterns.md
setup-database.md

詳細

<essential_principles>

SQLAlchemy 2.0 + Pydantic + PostgreSQL のベストプラクティス

このスキルでは、本番環境に対応したデータベースレイヤーの構築に関する専門的なガイダンスを提供します。

スタック
  • SQLAlchemy 2.0(非同期サポート、asyncpg ドライバー)
  • Pydantic v2(検証とシリアライズ)
  • Alembic(マイグレーション)
  • PostgreSQL のみ
基本原則

1. 関心の分離

models/       # SQLAlchemy ORM models (database layer)
schemas/      # Pydantic schemas (API layer)
repositories/ # Data access patterns
services/     # Business logic

2. 型安全性を最優先 常に Mapped[] 型アノテーションを使い、SQLAlchemy 2.0 スタイルに従います。

from sqlalchemy.orm import Mapped, mapped_column

class User(Base):
    __tablename__ = "users"
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str] = mapped_column(String(100))

3. デフォルトで非同期 FastAPI では非同期エンジンとセッションを使用します。

from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
engine = create_async_engine("postgresql+asyncpg://...")

4. Pydantic と SQLAlchemy の連携 モデルとスキーマは分離しつつ、相互にマッピングできるようにします。

# Schema reads from ORM
class UserRead(BaseModel):
    model_config = ConfigDict(from_attributes=True)

5. リポジトリパターン テスト容易性とクリーンなコードのために、データベース操作を抽象化します。 </essential_principles>

どのようなサポートが必要ですか?
  1. データベースレイヤーのセットアップ - SQLAlchemy + Pydantic + Alembic を一から初期化する
  2. モデルの定義 - Pydantic スキーマを備えた SQLAlchemy モデルを作成する
  3. マイグレーションの作成 - Alembic のマイグレーションを生成・管理する
  4. クエリパターン - 非同期 CRUD、JOIN、Eager Loading、最適化
  5. 完全な実装 - 機能に必要なデータベースレイヤー全体を実装する
| 応答 | ワークフロー | |----------|----------| | 1, "setup", "initialize", "start" | workflows/setup-database.md | | 2, "model", "define", "create model" | workflows/define-models.md | | 3, "migration", "alembic", "schema change" | workflows/create-migration.md | | 4, "query", "crud", "repository" | workflows/query-patterns.md | | 5, "full", "complete", "feature" | setup → define-models → create-migration を実行 |

自動検出のトリガー(ユーザーが次の内容に言及した場合、このスキルを使用します):

  • database, db, sqlalchemy, postgres, postgresql
  • model, migration, alembic
  • repository, crud, query
  • async session, connection pool

<reference_index>

ドメイン知識

リファレンス目的
references/best-practices.md本番環境のパターン、セキュリティ、パフォーマンス
references/patterns.mdリポジトリ、Unit of Work、一般的なクエリ
references/async-patterns.md非同期セッション管理、FastAPI との連携
</reference_index>

<workflows_index>

ワークフロー目的
workflows/setup-database.mdデータベースレイヤー全体を初期化する
workflows/define-models.mdモデル、スキーマ、リレーションシップを作成する
workflows/create-migration.mdAlembic のマイグレーションワークフロー
workflows/query-patterns.mdCRUD 操作と最適化
</workflows_index>

<quick_reference>

ファイル構成

src/
├── db/
│   ├── __init__.py
│   ├── base.py          # DeclarativeBase
│   ├── session.py       # Engine + async session factory
│   └── dependencies.py  # FastAPI dependency
├── models/
│   ├── __init__.py
│   └── user.py          # SQLAlchemy models
├── schemas/
│   ├── __init__.py
│   └── user.py          # Pydantic schemas
├── repositories/
│   ├── __init__.py
│   ├── base.py          # Generic repository
│   └── user.py          # User repository
└── alembic/
    ├── alembic.ini
    ├── env.py
    └── versions/

必須のインポート

# Models
from sqlalchemy import String, Integer, ForeignKey, DateTime
from sqlalchemy.orm import Mapped, mapped_column, relationship, DeclarativeBase

# Async
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker

# Pydantic
from pydantic import BaseModel, ConfigDict, Field

接続文字列

# PostgreSQL async
DATABASE_URL = "postgresql+asyncpg://user:pass@localhost:5432/dbname"

</quick_reference>

<success_criteria> 次の条件を満たすと、データベースレイヤーは完成です。

  • 非同期エンジンとセッションファクトリーが設定されている
  • 共通フィールド(id、created_at、updated_at)を備えたベースモデルがある
  • モデルで Mapped[] 型アノテーションが使用されている
  • from_attributes=True を指定した Pydantic スキーマがある
  • Alembic が非同期用に設定されている
  • リポジトリパターンが実装されている
  • セッション注入用の FastAPI 依存関係がある
  • 本番環境用のコネクションプーリングが設定されている </success_criteria>

コメント