示例#1
0
    def __init__(self, *args, **kwargs):
        super(DatabaseWrapper, self).__init__(*args, **kwargs)

        self.features = DatabaseFeatures(self)
        self.ops = DatabaseOperations(self)
        self.client = DatabaseClient(self)
        self.creation = DatabaseCreation(self)
        self.introspection = DatabaseIntrospection(self)
        self.validation = BaseDatabaseValidation(self)
 def _run_it(self, dbinfo):
     """
     That function invokes the runshell command, while mocking
     subprocess.call. It returns a 2-tuple with:
     - The command line list
     - The binary content of file pointed by environment PGPASSFILE, or
       None.
     """
     def _mock_subprocess_call(*args):
         self.subprocess_args = list(*args)
         if 'PGPASSFILE' in os.environ:
             self.pgpass = open(os.environ['PGPASSFILE'], 'rb').read()
         else:
             self.pgpass = None
         return 0
     self.subprocess_args = None
     self.pgpass = None
     with mock.patch('subprocess.call', new=_mock_subprocess_call):
         DatabaseClient.runshell_db(dbinfo)
     return self.subprocess_args, self.pgpass
示例#3
0
    def __init__(self, *args, **kwargs):
        super(DatabaseWrapper, self).__init__(*args, **kwargs)

        self.features = DatabaseFeatures(self)
        autocommit = self.settings_dict["OPTIONS"].get('autocommit', False)
        self.features.uses_autocommit = autocommit
        self._set_isolation_level(int(not autocommit))
        self.ops = DatabaseOperations(self)
        self.client = DatabaseClient(self)
        self.creation = DatabaseCreation(self)
        self.introspection = DatabaseIntrospection(self)
        self.validation = BaseDatabaseValidation(self)
示例#4
0
 def _run_it(self, dbinfo):
     """
     That function invokes the runshell command, while mocking
     subprocess.call. It returns a 2-tuple with:
     - The command line list
     - The binary content of file pointed by environment PGPASSFILE, or
       None.
     """
     def _mock_subprocess_call(*args):
         self.subprocess_args = list(*args)
         if 'PGPASSFILE' in os.environ:
             with open(os.environ['PGPASSFILE'], 'rb') as f:
                 self.pgpass = f.read().strip()  # ignore line endings
         else:
             self.pgpass = None
         return 0
     self.subprocess_args = None
     self.pgpass = None
     with mock.patch('subprocess.call', new=_mock_subprocess_call):
         DatabaseClient.runshell_db(dbinfo)
     return self.subprocess_args, self.pgpass
示例#5
0
    def __init__(self, *args, **kwargs):
        super(DatabaseWrapper, self).__init__(*args, **kwargs)

        opts = self.settings_dict["OPTIONS"]
        RC = psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED
        self.isolation_level = opts.get('isolation_level', RC)

        self.features = DatabaseFeatures(self)
        self.ops = DatabaseOperations(self)
        self.client = DatabaseClient(self)
        self.creation = DatabaseCreation(self)
        self.introspection = DatabaseIntrospection(self)
        self.validation = BaseDatabaseValidation(self)
示例#6
0
    def __init__(self, *args, **kwargs):
        super(DatabaseWrapper, self).__init__(*args, **kwargs)

        self.features = DatabaseFeatures(self)
        autocommit = self.settings_dict["OPTIONS"].get('autocommit', False)
        self.features.uses_autocommit = autocommit
        if autocommit:
            level = psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT
        else:
            level = psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED
        self._set_isolation_level(level)
        self.ops = DatabaseOperations(self)
        self.client = DatabaseClient(self)
        self.creation = DatabaseCreation(self)
        self.introspection = DatabaseIntrospection(self)
        self.validation = BaseDatabaseValidation(self)
示例#7
0
    def __init__(self, *args, **kwargs):
        super(DatabaseWrapper, self).__init__(*args, **kwargs)

        settings_dict = self.settings_dict

        self.features = DatabaseFeatures(self)
        autocommit = settings_dict["OPTIONS"].get('autocommit', False)
        self.features.uses_autocommit = autocommit
        if autocommit:
            level = psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT
        else:
            level = psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED
        self._set_isolation_level(level)
        self.ops = DatabaseOperations(self)
        self.client = DatabaseClient(self)
        self.creation = DatabaseCreation(self)
        self.introspection = DatabaseIntrospection(self)
        self.validation = BaseDatabaseValidation(self)
        self._pg_version = None

        if not settings_dict['NAME']:
            from django.core.exceptions import ImproperlyConfigured
            raise ImproperlyConfigured(
                "settings.DATABASES is improperly configured. "
                "Please supply the NAME value.")

        try:
            self.pool = _pools[self.alias]
        except KeyError:
            conn_params = {
                'database': settings_dict['NAME'],
            }
            conn_params.update(settings_dict['OPTIONS'])
            if 'autocommit' in conn_params:
                del conn_params['autocommit']
            if settings_dict['USER']:
                conn_params['user'] = settings_dict['USER']
            if settings_dict['PASSWORD']:
                conn_params['password'] = force_str(settings_dict['PASSWORD'])
            if settings_dict['HOST']:
                conn_params['host'] = settings_dict['HOST']
            if settings_dict['PORT']:
                conn_params['port'] = settings_dict['PORT']

            self.pool = GeventConnectionPool(1, DB_POOL_MAX_CONN,
                                             **conn_params)
            _pools[self.alias] = self.pool