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.md
source content

SQLAlchemy Code Review

Quick Reference

Issue TypeReference
Session lifecycle, context managers, async sessionsreferences/sessions.md
relationship(), lazy loading, N+1, joinedloadreferences/relationships.md
select() vs query(), ORM overhead, bulk opsreferences/queries.md
Alembic patterns, reversible migrations, data migrationsreferences/migrations.md

Review Checklist

  • Sessions use context managers (
    with
    ,
    async with
    )
  • No session sharing across requests or threads
  • Sessions closed/cleaned up properly
  • relationship()
    uses appropriate
    lazy
    strategy
  • Explicit
    joinedload
    /
    selectinload
    to avoid N+1
  • No lazy loading in loops (N+1 queries)
  • Using SQLAlchemy 2.0
    select()
    syntax, not legacy
    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
    op.execute()
    not ORM models
  • 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

  1. Are all sessions properly managed with context managers?
  2. Are relationships configured to avoid N+1 queries?
  3. Are queries using SQLAlchemy 2.0
    select()
    syntax?
  4. Are all migrations reversible and properly tested?