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