Skip to content

python.sqlalchemy.session_management

Stability High

Detects SQLAlchemy sessions without proper lifecycle management.

Poor session management:

  • Connection leaks — Sessions not closed
  • Stale data — Long-lived sessions see outdated data
  • Transaction issues — Uncommitted changes lost
# ❌ Before (manual session, no cleanup)
def get_user(user_id: int):
session = Session()
user = session.query(User).get(user_id)
return user # Session never closed!
# ✅ After (proper lifecycle management)
from contextlib import contextmanager
@contextmanager
def get_session():
session = Session()
try:
yield session
session.commit()
except Exception:
session.rollback()
raise
finally:
session.close()
def get_user(user_id: int):
with get_session() as session:
return session.query(User).get(user_id)
  • Sessions without close()
  • Missing context managers
  • Long-lived global sessions