Esempio n. 1
0
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)
Esempio n. 2
0
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()