from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from backend.config import DB_URL engine = create_engine(DB_URL, connect_args={"check_same_thread": False}) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) def get_db(): """ Dependency for FastAPI routes: yields a SQLAlchemy session. Usage: add as a dependency in route functions. """ db = SessionLocal() try: yield db finally: db.close() from contextlib import contextmanager @contextmanager def session_scope(): """ Context manager for non-FastAPI scripts: with session_scope() as db: ... Commits on success, rolls back on exception. """ db = SessionLocal() try: yield db db.commit() except Exception: db.rollback() raise finally: db.close()