Performance: Database session management
HIGH IMPACT
This affects backend response time and frontend loading speed by controlling how database connections are opened, reused, and closed during API requests.
from fastapi import Depends from sqlalchemy.orm import Session # Use connection pooling configured in SessionLocal def get_db(): db = SessionLocal() try: yield db finally: db.close() @app.get("/items/") def read_items(db: Session = Depends(get_db)): return db.query(Item).all()
def get_db(): db = SessionLocal() try: yield db finally: db.close() @app.get("/items/") def read_items(db: Session = Depends(get_db)): return db.query(Item).all()
| Pattern | DB Connections | Latency Impact | Concurrency | Verdict |
|---|---|---|---|---|
| New session per request without pooling | Creates new connection each time | High latency (10-50ms extra) | Poor concurrency due to overhead | [X] Bad |
| Global session reused across requests | Single connection reused | Low latency but risk of stale data | Blocks concurrent requests | [X] Bad |
| Scoped session with connection pooling | Reuses pooled connections | Low latency (~5-10ms overhead) | Good concurrency and fresh data | [OK] Good |