Beispiel #1
0
 def _cursor(self):
     set_tz = False
     settings_dict = self.settings_dict
     if self.connection is None:
         set_tz = True
         if settings_dict['NAME'] == '':
             from django.core.exceptions import ImproperlyConfigured
             raise ImproperlyConfigured("You need to specify NAME in your Django settings file.")
         conn_params = {
             'dbname': 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'] = settings_dict['PASSWORD']
         if settings_dict['HOST']:
             conn_params['host'] = settings_dict['HOST']
         if settings_dict['PORT']:
             conn_params['port'] = settings_dict['PORT']
         self.conn_params = conn_params
         #self.connection.set_client_encoding('UTF8')
         #self.connection.set_isolation_level(self.isolation_level)
         connection_created.send(sender=self.__class__)
     self.connection = Database.connect(**self.conn_params)
     cursor = CursorWrapper(wait(self.connection.cursor()))
     cursor.tzinfo_factory = None
     if set_tz:
         #cursor.execute("SET TIME ZONE %s", [settings_dict['TIME_ZONE']])
         if not hasattr(self, '_version'):
             self.__class__._version = (8,4) #get_version(cursor)
         if self._version[0:2] < (8, 0):
             # No savepoint support for earlier version of PostgreSQL.
             self.features.uses_savepoints = False
         if self.features.uses_autocommit:
             if self._version[0:2] < (8, 2):
                 # FIXME: Needs extra code to do reliable model insert
                 # handling, so we forbid it for now.
                 from django.core.exceptions import ImproperlyConfigured
                 raise ImproperlyConfigured("You cannot use autocommit=True with PostgreSQL prior to 8.2 at the moment.")
             else:
                 # FIXME: Eventually we're enable this by default for
                 # versions that support it, but, right now, that's hard to
                 # do without breaking other things (#10509).
                 self.features.can_return_id_from_insert = True
     cursor.execute('SET client_encoding="UTF8"')
     cursor.commit()
     return cursor
 def runOperation(self, query, args={}):            
     d = defer.Deferred()
     conn = pgasync.connect(**self.params)
     dd = conn.cursor()
     dd.addCallback(self._runOperation, conn, d, query, args)
     return d