"""MySQL connector.""" from contextlib import contextmanager from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from handle_user_changes import config if config.ENABLE_USER_DATA_UPDATE or config.ENABLE_DEACTIVATE_USER_DEVICES: engine = create_engine('mysql+pymysql://{user}:{password}@{host}:{port}/{database_name}'.format( user=config.DB_USER, password=config.DB_PASS, host=config.DB_HOST, port=config.DB_PORT, database_name=config.DB_NAME), pool_recycle=config.DB_POOL_RECYCLE, pool_size=config.DB_POOL_SIZE ) _session_factory = scoped_session(sessionmaker(bind=engine)) _session = _session_factory() @contextmanager def session_scope(): """Provide a transactional scope around a series of operations. """ try: yield _session _session.commit() except Exception: _session.rollback() raise finally: _session.close()