Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #4
0
    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)