sqlalchemy-patternslisted
Install: claude install-skill Izangi2714/claude-code-python-stack
# SQLAlchemy 2.0 Patterns
Modern SQLAlchemy patterns for building robust data access layers.
## When to Activate
- Designing database models with SQLAlchemy
- Writing database queries (sync or async)
- Setting up Alembic migrations
- Implementing repository pattern
- Optimizing query performance
## Database Setup (Async)
```python
from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker, AsyncSession
from sqlalchemy.orm import DeclarativeBase
from app.config import settings
engine = create_async_engine(
settings.DATABASE_URL,
echo=settings.DEBUG,
pool_size=20,
max_overflow=10,
pool_pre_ping=True,
)
AsyncSessionLocal = async_sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)
class Base(DeclarativeBase):
pass
async def get_db_session() -> AsyncGenerator[AsyncSession, None]:
async with AsyncSessionLocal() as session:
try:
yield session
await session.commit()
except Exception:
await session.rollback()
raise
```
## Model Patterns
### Base Model with Common Fields
```python
from sqlalchemy import DateTime, func
from sqlalchemy.orm import Mapped, mapped_column
from datetime import datetime
class TimestampMixin:
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True), server_default=func.now()
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True), server_default=func.now(), onupdate=func.n