"""MySQL database connector. Manages interactions with Relational Database (MySQL and SQLite). """ from functools import wraps from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from asset_file_details import config from asset_file_details.utils import db as db_utils _db_engine = db_utils.create_engine(config.DD_DB_URL) _session_maker = sessionmaker(bind=_db_engine) BaseModel = declarative_base() def db_session(function): """DB Session Wrappper. Creates a new session if one isn't passed in. """ @wraps(function) def wrapper(*args, **kwargs): session = kwargs.pop('session', None) if session: return function(*args, session=session, **kwargs) else: with db_utils.create_session(_session_maker) as session: return function(*args, session=session, **kwargs) return wrapper