python.sqlalchemy.session_management
Stability
High
Detects SQLAlchemy sessions without proper lifecycle management.
Why It Matters
Section titled “Why It Matters”Poor session management:
- Connection leaks — Sessions not closed
- Stale data — Long-lived sessions see outdated data
- Transaction issues — Uncommitted changes lost
Example
Section titled “Example”# ❌ 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
@contextmanagerdef 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)What Unfault Detects
Section titled “What Unfault Detects”- Sessions without close()
- Missing context managers
- Long-lived global sessions