Skip to content

python.sqlalchemy.lazy_loading

Performance High

Detects SQLAlchemy queries with lazy loading causing N+1 issues.

Lazy loading problems:

  • N+1 queries — One query per related object
  • Slow endpoints — Database round trips
  • Database overload — Excessive query count
# ❌ 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-many
users = session.query(User).options(
selectinload(User.orders)
).all()
# For many-to-one
orders = session.query(Order).options(
joinedload(Order.user)
).all()
for user in users:
print(user.orders) # No additional queries!
  • Relationship access in loops
  • Missing joinedload/selectinload
  • lazy=‘dynamic’ without filtering