From d18f75af447bc18b062564ab163943c16d79effc Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sat, 11 Apr 2009 11:41:35 +0000 Subject: [PATCH] Fixed #10357 -- Fixed the "dbshell" command for Windows users. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10517 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/backends/mysql/client.py | 14 ++++++++++---- django/db/backends/oracle/client.py | 10 ++++++++-- django/db/backends/postgresql/client.py | 10 ++++++++-- django/db/backends/sqlite3/client.py | 13 ++++++++++--- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/django/db/backends/mysql/client.py b/django/db/backends/mysql/client.py index 129f86a951..3743225957 100644 --- a/django/db/backends/mysql/client.py +++ b/django/db/backends/mysql/client.py @@ -1,12 +1,14 @@ -from django.db.backends import BaseDatabaseClient import os +import sys + +from django.db.backends import BaseDatabaseClient class DatabaseClient(BaseDatabaseClient): executable_name = 'mysql' def runshell(self): settings_dict = self.connection.settings_dict - args = [''] + args = [self.executable_name] db = settings_dict['DATABASE_OPTIONS'].get('db', settings_dict['DATABASE_NAME']) user = settings_dict['DATABASE_OPTIONS'].get('user', settings_dict['DATABASE_USER']) passwd = settings_dict['DATABASE_OPTIONS'].get('passwd', settings_dict['DATABASE_PASSWORD']) @@ -14,7 +16,7 @@ class DatabaseClient(BaseDatabaseClient): port = settings_dict['DATABASE_OPTIONS'].get('port', settings_dict['DATABASE_PORT']) defaults_file = settings_dict['DATABASE_OPTIONS'].get('read_default_file') # Seems to be no good way to set sql_mode with CLI. - + if defaults_file: args += ["--defaults-file=%s" % defaults_file] if user: @@ -28,4 +30,8 @@ class DatabaseClient(BaseDatabaseClient): if db: args += [db] - os.execvp(self.executable_name, args) + if os.name == 'nt': + sys.exit(os.system(" ".join(args))) + else: + os.execvp(self.executable_name, args) + diff --git a/django/db/backends/oracle/client.py b/django/db/backends/oracle/client.py index 84193eaedc..ccc64ebffc 100644 --- a/django/db/backends/oracle/client.py +++ b/django/db/backends/oracle/client.py @@ -1,5 +1,7 @@ -from django.db.backends import BaseDatabaseClient import os +import sys + +from django.db.backends import BaseDatabaseClient class DatabaseClient(BaseDatabaseClient): executable_name = 'sqlplus' @@ -7,4 +9,8 @@ class DatabaseClient(BaseDatabaseClient): def runshell(self): conn_string = self.connection._connect_string() args = [self.executable_name, "-L", conn_string] - os.execvp(self.executable_name, args) + if os.name == 'nt': + sys.exit(os.system(" ".join(args))) + else: + os.execvp(self.executable_name, args) + diff --git a/django/db/backends/postgresql/client.py b/django/db/backends/postgresql/client.py index 695017130f..13273b9fb5 100644 --- a/django/db/backends/postgresql/client.py +++ b/django/db/backends/postgresql/client.py @@ -1,5 +1,7 @@ -from django.db.backends import BaseDatabaseClient import os +import sys + +from django.db.backends import BaseDatabaseClient class DatabaseClient(BaseDatabaseClient): executable_name = 'psql' @@ -14,4 +16,8 @@ class DatabaseClient(BaseDatabaseClient): if settings_dict['DATABASE_PORT']: args.extend(["-p", str(settings_dict['DATABASE_PORT'])]) args += [settings_dict['DATABASE_NAME']] - os.execvp(self.executable_name, args) + if os.name == 'nt': + sys.exit(os.system(" ".join(args))) + else: + os.execvp(self.executable_name, args) + diff --git a/django/db/backends/sqlite3/client.py b/django/db/backends/sqlite3/client.py index 0b65444d74..8836b09899 100644 --- a/django/db/backends/sqlite3/client.py +++ b/django/db/backends/sqlite3/client.py @@ -1,9 +1,16 @@ -from django.db.backends import BaseDatabaseClient import os +import sys + +from django.db.backends import BaseDatabaseClient class DatabaseClient(BaseDatabaseClient): executable_name = 'sqlite3' def runshell(self): - args = ['', self.connection.settings_dict['DATABASE_NAME']] - os.execvp(self.executable_name, args) + args = [self.executable_name, + self.connection.settings_dict['DATABASE_NAME']] + if os.name == 'nt': + sys.exit(os.system(" ".join(args))) + else: + os.execvp(self.executable_name, args) +