Skills sqlalchemy-code-review
Reviews SQLAlchemy code for session management, relationships, N+1 queries, and migration patterns. Use when reviewing SQLAlchemy 2.0 code, checking session lifecycle, relationship() usage, or Alembic migrations.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/anderskev/sqlalchemy-code-review" ~/.claude/skills/openclaw-skills-sqlalchemy-code-review && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/anderskev/sqlalchemy-code-review" ~/.openclaw/skills/openclaw-skills-sqlalchemy-code-review && rm -rf "$T"
manifest:
skills/anderskev/sqlalchemy-code-review/SKILL.mdsource content
SQLAlchemy Code Review
Quick Reference
| Issue Type | Reference |
|---|---|
| Session lifecycle, context managers, async sessions | references/sessions.md |
| relationship(), lazy loading, N+1, joinedload | references/relationships.md |
| select() vs query(), ORM overhead, bulk ops | references/queries.md |
| Alembic patterns, reversible migrations, data migrations | references/migrations.md |
Review Checklist
- Sessions use context managers (
,with
)async with - No session sharing across requests or threads
- Sessions closed/cleaned up properly
-
uses appropriaterelationship()
strategylazy - Explicit
/joinedload
to avoid N+1selectinload - No lazy loading in loops (N+1 queries)
- Using SQLAlchemy 2.0
syntax, not legacyselect()query() - Bulk operations use bulk_insert/bulk_update, not ORM loops
- Async sessions use proper async context managers
- Migrations are reversible with
downgrade() - Data migrations use
not ORM modelsop.execute() - Migration dependencies properly ordered
When to Load References
- Reviewing session creation/cleanup → sessions.md
- Reviewing model relationships → relationships.md
- Reviewing database queries → queries.md
- Reviewing Alembic migration files → migrations.md
Review Questions
- Are all sessions properly managed with context managers?
- Are relationships configured to avoid N+1 queries?
- Are queries using SQLAlchemy 2.0
syntax?select() - Are all migrations reversible and properly tested?