Skip to content

Commit 47c1d9e

Browse files
authored
Merge pull request #52 from timnyborg/dev
Add additional parameters argument to runshell as required by Django 3.1
2 parents 9e934b0 + aebac31 commit 47c1d9e

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

mssql/client.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,24 @@
1010
class DatabaseClient(BaseDatabaseClient):
1111
executable_name = 'sqlcmd'
1212

13-
def runshell(self):
14-
settings_dict = self.connection.settings_dict
13+
@classmethod
14+
def settings_to_cmd_args(cls, settings_dict, parameters):
1515
options = settings_dict['OPTIONS']
1616
user = options.get('user', settings_dict['USER'])
1717
password = options.get('passwd', settings_dict['PASSWORD'])
1818

1919
driver = options.get('driver', 'ODBC Driver 13 for SQL Server')
2020
ms_drivers = re.compile('^ODBC Driver .* for SQL Server$|^SQL Server Native Client')
2121
if not ms_drivers.match(driver):
22-
self.executable_name = 'isql'
22+
cls.executable_name = 'isql'
2323

24-
if self.executable_name == 'sqlcmd':
24+
if cls.executable_name == 'sqlcmd':
2525
db = options.get('db', settings_dict['NAME'])
2626
server = options.get('host', settings_dict['HOST'])
2727
port = options.get('port', settings_dict['PORT'])
2828
defaults_file = options.get('read_default_file')
2929

30-
args = [self.executable_name]
30+
args = [cls.executable_name]
3131
if server:
3232
if port:
3333
server = ','.join((server, str(port)))
@@ -44,9 +44,11 @@ def runshell(self):
4444
args += ["-i", defaults_file]
4545
else:
4646
dsn = options.get('dsn', '')
47-
args = ['%s -v %s %s %s' % (self.executable_name, dsn, user, password)]
47+
args = ['%s -v %s %s %s' % (cls.executable_name, dsn, user, password)]
4848

49-
try:
50-
subprocess.check_call(args)
51-
except KeyboardInterrupt:
52-
pass
49+
args.extend(parameters)
50+
return args
51+
52+
def runshell(self, parameters=[]):
53+
args = DatabaseClient.settings_to_cmd_args(self.connection.settings_dict, parameters)
54+
subprocess.run(args, check=True)

0 commit comments

Comments
 (0)