sqlalchemy-code-review
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSQLAlchemy Code Review
SQLAlchemy代码审查
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 |
| 问题类型 | 参考文档 |
|---|---|
| 会话生命周期、上下文管理器、异步会话 | references/sessions.md |
| relationship()、延迟加载、N+1查询、joinedload | references/relationships.md |
| select() vs query()、ORM开销、批量操作 | references/queries.md |
| Alembic模式、可逆迁移、数据迁移 | 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 appropriate
relationship()strategylazy - Explicit /
joinedloadto avoid N+1selectinload - No lazy loading in loops (N+1 queries)
- Using SQLAlchemy 2.0 syntax, not legacy
select()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 models
op.execute() - Migration dependencies properly ordered
- 会话使用上下文管理器(、
with)async with - 会话未跨请求或线程共享
- 会话已正确关闭/清理
- 使用合适的
relationship()策略lazy - 显式使用/
joinedload避免N+1查询selectinload - 循环中未使用延迟加载(避免N+1查询)
- 使用SQLAlchemy 2.0的语法,而非旧版
select()query() - 批量操作使用bulk_insert/bulk_update,而非ORM循环
- 异步会话使用正确的异步上下文管理器
- 迁移通过实现可逆
downgrade() - 数据迁移使用而非ORM模型
op.execute() - 迁移依赖已正确排序
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
- 审查会话创建/清理 → sessions.md
- 审查模型关系 → relationships.md
- 审查数据库查询 → queries.md
- 审查Alembic迁移文件 → 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?
- 所有会话是否都通过上下文管理器正确管理?
- 关系配置是否避免了N+1查询?
- 查询是否使用SQLAlchemy 2.0的语法?
select() - 所有迁移是否可逆且经过正确测试?