예제 #1
0
 def __new__(cls, name='template1'):
     with cls._lock:
         now = datetime.now()
         databases = cls._databases[os.getpid()]
         for database in list(databases.values()):
             if ((now - database._last_use).total_seconds() > _timeout
                     and database.name != name
                     and not database._connpool._used):
                 database.close()
         if name in databases:
             inst = databases[name]
         else:
             if name == 'template1':
                 minconn = 0
             else:
                 minconn = _minconn
             inst = DatabaseInterface.__new__(cls, name=name)
             logger.info('connect to "%s"', name)
             inst._connpool = ThreadedConnectionPool(
                 minconn,
                 _maxconn,
                 **cls._connection_params(name),
                 cursor_factory=LoggingCursor)
             databases[name] = inst
         inst._last_use = datetime.now()
         return inst
예제 #2
0
 def __new__(cls, name=_default_name):
     with cls._lock:
         now = datetime.now()
         databases = cls._databases[os.getpid()]
         for database in list(databases.values()):
             if ((now - database._last_use).total_seconds() > _timeout
                     and database.name != name
                     and not database._connpool._used):
                 database.close()
         if name in databases:
             inst = databases[name]
         else:
             if name == _default_name:
                 minconn = 0
             else:
                 minconn = _minconn
             inst = DatabaseInterface.__new__(cls, name=name)
             try:
                 inst._connpool = ThreadedConnectionPool(
                     minconn,
                     _maxconn,
                     **cls._connection_params(name),
                     cursor_factory=LoggingCursor)
                 logger.info('connected to "%s"', name)
             except Exception:
                 logger.error('connection to "%s" failed',
                              name,
                              exc_info=True)
                 raise
             else:
                 logger.info('connection to "%s" succeeded', name)
             databases[name] = inst
         inst._last_use = datetime.now()
         return inst
예제 #3
0
    def __new__(cls, name='template1'):
        with cls._lock:
            if name in cls._databases:
                return cls._databases[name]
            inst = DatabaseInterface.__new__(cls, name=name)
            cls._databases[name] = inst

            logger.info('connect to "%s"', name)
            minconn = config.getint('database', 'minconn', default=1)
            maxconn = config.getint('database', 'maxconn', default=64)
            inst._connpool = ThreadedConnectionPool(
                minconn, maxconn, cls.dsn(name), cursor_factory=LoggingCursor)

            return inst
예제 #4
0
 def __new__(cls, name=_default_name):
     if (name == ':memory:'
             and getattr(cls._local, 'memory_database', None)):
         return cls._local.memory_database
     return DatabaseInterface.__new__(cls, name=name)
예제 #5
0
 def __new__(cls, name='template1'):
     if name in cls._databases:
         return cls._databases[name]
     return DatabaseInterface.__new__(cls, name=name)
예제 #6
0
파일: database.py 프로젝트: HarrySG/trytond
 def __new__(cls, database_name='template1'):
     if database_name in cls._databases:
         return cls._databases[database_name]
     return DatabaseInterface.__new__(cls, database_name=database_name)
예제 #7
0
 def __new__(cls, database_name="template1"):
     if database_name in cls._databases:
         return cls._databases[database_name]
     return DatabaseInterface.__new__(cls, database_name=database_name)
예제 #8
0
 def __new__(cls, database_name=':memory:'):
     if (database_name == ':memory:'
             and hasattr(cls._local, 'memory_database')
             and cls._local.memory_database):
         return cls._local.memory_database
     return DatabaseInterface.__new__(cls, database_name=database_name)
예제 #9
0
 def __new__(cls, database_name=':memory:'):
     if (database_name == ':memory:'
             and getattr(cls._local, 'memory_database', None)):
         return cls._local.memory_database
     return DatabaseInterface.__new__(cls, database_name=database_name)
예제 #10
0
 def __new__(cls, name=':memory:'):
     if (name == ':memory:'
             and getattr(cls._local, 'memory_database', None)):
         return cls._local.memory_database
     return DatabaseInterface.__new__(cls, name=name)
예제 #11
0
 def __new__(cls, name='template1'):
     if name in cls._databases:
         return cls._databases[name]
     return DatabaseInterface.__new__(cls, name=name)