Skip to content

Commit df8fe9c

Browse files
committed
move database port and user defaults to toolbox; move is_localdb test to toolbox
1 parent 8c3deb6 commit df8fe9c

3 files changed

Lines changed: 33 additions & 13 deletions

File tree

sql shell.exe

234 Bytes
Binary file not shown.

sql shell.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,23 @@
1313

1414
dbms_defaults = {
1515
'MSSQL': {
16-
'port': 1433,
17-
'user': 'sa',
1816
'shell': 'mssql-cli',
1917
'shell-windows': 'mssql-cli.bat',
2018
'legacy': 'sqlcmd'
2119
},
2220

2321
'MySQL': {
24-
'port': 3306,
25-
'user': 'root',
2622
'shell': 'mycli',
2723
'legacy': 'mysql'
2824
},
2925

3026
'Oracle': {
31-
'port': 1521,
32-
'user': 'sys',
3327
'shell': 'sql',
3428
'shell-windows': 'sql.exe',
3529
'legacy': 'sqlplus'
3630
},
3731

3832
'PostgreSQL': {
39-
'port': 5432,
40-
'user': 'postgres',
4133
'shell': 'pgcli',
4234
'legacy': 'psql'
4335
},
@@ -142,8 +134,8 @@ def on_ok(self): # NOSONAR
142134
except KeyError:
143135
dsn = ''
144136
host = self.host.value or 'localhost'
145-
port = self.port.value or db_defaults.get('port')
146-
user = self.user.value or db_defaults.get('user')
137+
port = self.port.value or tb.defaults['port'].get(dbtype.lower())
138+
user = self.user.value or tb.defaults['db_user'].get(dbtype.lower())
147139
passwd = self.passwd.value
148140
db = self.db.value
149141

@@ -229,8 +221,7 @@ def on_ok(self): # NOSONAR
229221
# SPECIAL CASES FOR RDBMS
230222
if dbtype == 'MSSQL':
231223
# named pipe connection to LocalDB
232-
localdb = r'(localdb)\mssqllocaldb'
233-
if localdb in dsn.lower() or host.lower() == localdb:
224+
if tb.is_localdb(dsn) or tb.is_localdb(host):
234225
opts.remove('-N') # `-N` = "encrypt" (NOSONAR)
235226
conn_params[5] = '{host}' # host,port -> host
236227

toolbox.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,33 @@
1-
import sys
1+
import sys, urllib
2+
3+
defaults = {
4+
'port': {
5+
'mssql': 1433,
6+
'mysql': 3306,
7+
'oracle': 1521,
8+
'postgresql': 5432
9+
},
10+
11+
'db_user': {
12+
'mssql': 'sa',
13+
'mysql': 'root',
14+
'oracle': 'sys',
15+
'postgresql': 'postgres'
16+
}
17+
}
18+
19+
def is_localdb(dsn):
20+
localdb = r'(localdb)\mssqllocaldb'
21+
parsed_url = urllib.parse.urlsplit(dsn)
22+
23+
if parsed_url.scheme == 'mssql':
24+
return parsed_url.hostname == localdb
25+
26+
elif not parsed_url.scheme:
27+
return localdb in parsed_url.path.lower()
28+
29+
else:
30+
return False
231

332
# https://pyinstaller.readthedocs.io/en/stable/runtime-information.html
433
def is_pyinstaller():

0 commit comments

Comments
 (0)