from contextlib import contextmanager from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from src import config engine = create_engine(config.DB_CONNECTION_URI, pool_pre_ping=True, query_cache_size=0) _session_maker = sessionmaker(bind=engine, expire_on_commit=False) _scoped_session = scoped_session(_session_maker) _session = _scoped_session() @contextmanager def db_session(): try: yield _session _session.commit() except Exception: _session.rollback() raise