python.sqlalchemy.lazy_loading
Performance
High
Detects SQLAlchemy queries with lazy loading causing N+1 issues.
Why It Matters
Section titled “Why It Matters”Lazy loading problems:
- N+1 queries — One query per related object
- Slow endpoints — Database round trips
- Database overload — Excessive query count
Example
Section titled “Example”# ❌ Before (lazy loading causes N+1)users = session.query(User).all()for user in users: print(user.orders) # Triggers a query per user!# ✅ After (eager loading)from sqlalchemy.orm import joinedload, selectinload
# For one-to-manyusers = session.query(User).options( selectinload(User.orders)).all()
# For many-to-oneorders = session.query(Order).options( joinedload(Order.user)).all()
for user in users: print(user.orders) # No additional queries!What Unfault Detects
Section titled “What Unfault Detects”- Relationship access in loops
- Missing joinedload/selectinload
- lazy=‘dynamic’ without filtering