""" MySQL connector =============== """ from contextlib import contextmanager from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import scoped_session from sqlalchemy.orm import sessionmaker from ytownership import config BaseModel = declarative_base() _db_engine = create_engine( config.DB_CONNECTION_STRING, poolclass=config.DB_POOLCLASS) _db_session_factory = sessionmaker(bind=_db_engine, expire_on_commit=False) @contextmanager def session_scope(): """Provide a transactional scope around a series of operations. """ session = scoped_session(_db_session_factory) try: yield session session.commit() except: # noqa session.rollback() raise finally: session.remove()