from contextlib import contextmanager from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from fpsweeper import config # fingerprint_capture db fpc_engine = create_engine(config.FPC_DB_URL, **config.DB_ENGINE_SETTINGS) fpc_session = sessionmaker(bind=fpc_engine, expire_on_commit=False) # art_relations db ar_engine = create_engine(config.AR_DB_URL, **config.DB_ENGINE_SETTINGS) ar_session = sessionmaker(bind=ar_engine, expire_on_commit=False) # direct_delivery db dd_engine = create_engine(config.DD_DB_URL, **config.DB_ENGINE_SETTINGS) dd_session = sessionmaker(bind=dd_engine, expire_on_commit=False) @contextmanager def db_session_scope(db_session): """Context manager for db session """ session = db_session() try: yield session session.commit() except: session.rollback() raise finally: session.close()