from walis import config engines = {} walle_my_url = ("mysql+pymysql://{user}:{passwd}@{host}:{port}/{database}" "?charset=utf8".format(**config.WALLE_ANALYTICS)) transaction_pg_url = ("postgresql+psycopg2://{user}:{passwd}@{host}:{port}" "/{database}".format(**config.TRANSACTION_PG)) mysql_engine = create_engine(walle_my_url, pool_size=10, max_overflow=-1, pool_recycle=1800) pg_engine = create_engine(transaction_pg_url, pool_size=10, max_overflow=-1, pool_recycle=1800) WDBSession = scoped_session( sessionmaker(autocommit=False, autoflush=False, bind=mysql_engine)) PGSession = scoped_session( sessionmaker(autocommit=False, autoflush=False, bind=pg_engine)) walle_db_commit = make_commit_decorator(WDBSession)
ModelBase = declarative_base() class WalisModel(object): def to_dict(self): result = {} for key, value in self.__dict__.iteritems(): if key.startswith('_'): continue result[key] = value return result db_commit = make_commit_decorator(DBSession) @contextmanager def walis_session(commit=False): session = DBSession() try: yield session if commit: session.commit() except Exception as e: session.rollback() raise_server_exc(DATABASE_MYSQL_ERROR, exc=e) finally: session.close()