diff options
Diffstat (limited to 'django/db/backends/postgresql')
| -rw-r--r-- | django/db/backends/postgresql/base.py | 29 | ||||
| -rw-r--r-- | django/db/backends/postgresql/client.py | 18 |
2 files changed, 24 insertions, 23 deletions
diff --git a/django/db/backends/postgresql/base.py b/django/db/backends/postgresql/base.py index ad271f2e38..9050cfd9e0 100644 --- a/django/db/backends/postgresql/base.py +++ b/django/db/backends/postgresql/base.py @@ -90,32 +90,33 @@ class DatabaseWrapper(BaseDatabaseWrapper): self.features = DatabaseFeatures() self.ops = DatabaseOperations() - self.client = DatabaseClient() + self.client = DatabaseClient(self) self.creation = DatabaseCreation(self) self.introspection = DatabaseIntrospection(self) self.validation = BaseDatabaseValidation() - def _cursor(self, settings): + def _cursor(self): set_tz = False + settings_dict = self.settings_dict if self.connection is None: set_tz = True - if settings.DATABASE_NAME == '': + if settings_dict['DATABASE_NAME'] == '': from django.core.exceptions import ImproperlyConfigured raise ImproperlyConfigured("You need to specify DATABASE_NAME in your Django settings file.") - conn_string = "dbname=%s" % settings.DATABASE_NAME - if settings.DATABASE_USER: - conn_string = "user=%s %s" % (settings.DATABASE_USER, conn_string) - if settings.DATABASE_PASSWORD: - conn_string += " password='%s'" % settings.DATABASE_PASSWORD - if settings.DATABASE_HOST: - conn_string += " host=%s" % settings.DATABASE_HOST - if settings.DATABASE_PORT: - conn_string += " port=%s" % settings.DATABASE_PORT - self.connection = Database.connect(conn_string, **self.options) + conn_string = "dbname=%s" % settings_dict['DATABASE_NAME'] + if settings_dict['DATABASE_USER']: + conn_string = "user=%s %s" % (settings_dict['DATABASE_USER'], conn_string) + if settings_dict['DATABASE_PASSWORD']: + conn_string += " password='%s'" % settings_dict['DATABASE_PASSWORD'] + if settings_dict['DATABASE_HOST']: + conn_string += " host=%s" % settings_dict['DATABASE_HOST'] + if settings_dict['DATABASE_PORT']: + conn_string += " port=%s" % settings_dict['DATABASE_PORT'] + self.connection = Database.connect(conn_string, **settings_dict['DATABASE_OPTIONS']) self.connection.set_isolation_level(1) # make transactions transparent to all cursors cursor = self.connection.cursor() if set_tz: - cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE]) + cursor.execute("SET TIME ZONE %s", [settings_dict['TIME_ZONE']]) if not hasattr(self, '_version'): self.__class__._version = get_version(cursor) if self._version < (8, 0): diff --git a/django/db/backends/postgresql/client.py b/django/db/backends/postgresql/client.py index 63f28a7b57..506372bfc4 100644 --- a/django/db/backends/postgresql/client.py +++ b/django/db/backends/postgresql/client.py @@ -1,19 +1,19 @@ from django.db.backends import BaseDatabaseClient -from django.conf import settings import os class DatabaseClient(BaseDatabaseClient): executable_name = 'psql' def runshell(self): + settings_dict = self.connection.settings_dict args = [self.executable_name] - if settings.DATABASE_USER: - args += ["-U", settings.DATABASE_USER] - if settings.DATABASE_PASSWORD: + if settings_dict['DATABASE_USER']: + args += ["-U", settings_dict['DATABASE_USER']] + if settings_dict['DATABASE_PASSWORD']: args += ["-W"] - if settings.DATABASE_HOST: - args.extend(["-h", settings.DATABASE_HOST]) - if settings.DATABASE_PORT: - args.extend(["-p", str(settings.DATABASE_PORT)]) - args += [settings.DATABASE_NAME] + if settings_dict['DATABASE_HOST']: + args.extend(["-h", settings_dict['DATABASE_HOST']]) + if settings_dict['DATABASE_PORT']: + args.extend(["-p", str(settings_dict['DATABASE_PORT'])]) + args += [settings_dict['DATABASE_NAME']] os.execvp(self.executable_name, args) |
