def __init__( self, databases, create_tables=False, pool_size=100, pool_recycle=60, pool_timeout=30, max_overflow=10, pool_reset_on_return="rollback", **kw ): self._cached_service_ids = {} # databases is a string containing one sqluri per service: # service1;sqluri1,service2;sqluri2 self._dbs = {} if pool_reset_on_return.lower() in ("", "none"): pool_reset_on_return = None for database in databases.split(","): database = database.split(";") service, sqluri = (el.strip() for el in database) if self._dbkey(service) in self._dbs: continue Base = declarative_base() if sqluri.startswith("mysql") or sqluri.startswith("pymysql"): engine = create_engine( sqluri, pool_size=pool_size, pool_recycle=pool_recycle, pool_timeout=pool_timeout, max_overflow=max_overflow, pool_reset_on_return=pool_reset_on_return, logging_name="wimms", ) else: # XXX will use a shared pool next engine = create_engine(sqluri, poolclass=NullPool) engine.echo = kw.get("echo", False) self._is_sqlite = engine.driver == "pysqlite" if self._is_sqlite: from wimms.sqliteschemas import get_cls # NOQA else: from wimms.schemas import get_cls # NOQA services = get_cls("services", Base) nodes = get_cls("nodes", Base) users = get_cls("users", Base) for table in (services, nodes, users): table.metadata.bind = engine if create_tables: table.create(checkfirst=True) self._dbs[self._dbkey(service)] = (engine, services, nodes, users)
def __init__(self, databases, create_tables=False, pool_size=100, pool_recycle=60, pool_timeout=30, max_overflow=10, pool_reset_on_return='rollback', **kw): self._cached_service_ids = {} # databases is a string containing one sqluri per service: # service1;sqluri1,service2;sqluri2 self._dbs = {} if pool_reset_on_return.lower() in ('', 'none'): pool_reset_on_return = None for database in databases.split(','): database = database.split(';') service, sqluri = (el.strip() for el in database) if self._dbkey(service) in self._dbs: continue Base = declarative_base() if sqluri.startswith('mysql') or sqluri.startswith('pymysql'): engine = create_engine( sqluri, pool_size=pool_size, pool_recycle=pool_recycle, pool_timeout=pool_timeout, max_overflow=max_overflow, pool_reset_on_return=pool_reset_on_return, logging_name='wimms' ) else: # XXX will use a shared pool next engine = create_engine(sqluri, poolclass=NullPool) engine.echo = kw.get('echo', False) self._is_sqlite = (engine.driver == 'pysqlite') if self._is_sqlite: from wimms.sqliteschemas import get_cls # NOQA else: from wimms.schemas import get_cls # NOQA services = get_cls('services', Base) nodes = get_cls('nodes', Base) users = get_cls('users', Base) for table in (services, nodes, users): table.metadata.bind = engine if create_tables: table.create(checkfirst=True) self._dbs[self._dbkey(service)] = (engine, services, nodes, users)
def __init__(self, sqluri, create_tables=False, pool_size=100, pool_recycle=60, pool_timeout=30, max_overflow=10, pool_reset_on_return='rollback', **kw): self._cached_service_ids = {} self.sqluri = sqluri if pool_reset_on_return.lower() in ('', 'none'): pool_reset_on_return = None if sqluri.startswith('mysql') or sqluri.startswith('pymysql'): self._engine = create_engine( sqluri, pool_size=pool_size, pool_recycle=pool_recycle, pool_timeout=pool_timeout, pool_reset_on_return=pool_reset_on_return, max_overflow=max_overflow, logging_name='wimms') else: self._engine = create_engine(sqluri, poolclass=NullPool) self._engine.echo = kw.get('echo', False) self._is_sqlite = (self._engine.driver == 'pysqlite') if self._is_sqlite: from wimms.sqliteschemas import get_cls # NOQA else: from wimms.schemas import get_cls # NOQA self.services = get_cls('services', _Base) self.nodes = get_cls('nodes', _Base) self.users = get_cls('users', _Base) for table in (self.services, self.nodes, self.users): table.metadata.bind = self._engine if create_tables: table.create(checkfirst=True)
def __init__(self, sqluri, create_tables=False, pool_size=100, pool_recycle=60, pool_timeout=30, max_overflow=10, pool_reset_on_return='rollback', **kw): self._cached_service_ids = {} self.sqluri = sqluri if pool_reset_on_return.lower() in ('', 'none'): pool_reset_on_return = None if sqluri.startswith('mysql') or sqluri.startswith('pymysql'): self._engine = create_engine( sqluri, pool_size=pool_size, pool_recycle=pool_recycle, pool_timeout=pool_timeout, pool_reset_on_return=pool_reset_on_return, max_overflow=max_overflow, logging_name='wimms' ) else: self._engine = create_engine(sqluri, poolclass=NullPool) self._engine.echo = kw.get('echo', False) self._is_sqlite = (self._engine.driver == 'pysqlite') if self._is_sqlite: from wimms.sqliteschemas import get_cls # NOQA else: from wimms.schemas import get_cls # NOQA self.services = get_cls('services', _Base) self.nodes = get_cls('nodes', _Base) self.users = get_cls('users', _Base) for table in (self.services, self.nodes, self.users): table.metadata.bind = self._engine if create_tables: table.create(checkfirst=True)