@@ -186,25 +186,69 @@ def _get_file(self, mode):
186
186
return config_file
187
187
188
188
def _build_connection_string (self , conn_dict ):
189
- driver = ""
190
- connformat = self ._connection_format
189
+ # driver = ""
190
+ # connformat= self._connection_format
191
+ # if conn_dict['engine'] == 'mssql' and sys.platform != 'win32':
192
+ # driver = "pyodbc"
193
+ # quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict['address'], conn_dict['user'], conn_dict['password']))
194
+ # conn_string = 'mssql+pyodbc:///?odbc_connect={}'.format(quoted)
195
+ #
196
+ # else:
197
+ # if conn_dict['engine'] == 'mssql':
198
+ # driver = "pyodbc"
199
+ # connformat=self._connection_format = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+10.0"
200
+ # elif conn_dict['engine'] == 'mysql':
201
+ # driver = "pymysql"
202
+ # elif conn_dict['engine'] == 'postgresql':
203
+ # driver = "psycopg2"
204
+ # else:
205
+ # driver = "None"
206
+ #
207
+ # conn_string = connformat % (
208
+ # conn_dict['engine'], driver, conn_dict['user'], conn_dict['password'], conn_dict['address'],
209
+ # conn_dict['db'])
210
+ # return conn_string
211
+ # driver = ""
212
+ # print "****", conn_dict
191
213
if conn_dict ['engine' ] == 'mssql' and sys .platform != 'win32' :
192
214
driver = "pyodbc"
193
- quoted = urllib .quote_plus ('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict ['address' ], conn_dict ['user' ], conn_dict ['password' ]))
215
+ quoted = urllib .quote_plus ('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict ['address' ], conn_dict ['user' ],
216
+ conn_dict ['password' ]))
217
+ # quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;DATABASE=%s' %
218
+ # (conn_dict['address'], conn_dict['user'], conn_dict['password'],conn_dict['db'],
219
+ # ))
194
220
conn_string = 'mssql+pyodbc:///?odbc_connect={}' .format (quoted )
195
-
196
221
else :
197
222
if conn_dict ['engine' ] == 'mssql' :
198
223
driver = "pyodbc"
199
- connformat = self ._connection_format = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+10.0"
224
+ conn = "%s+%s://%s:%s@%s/%s?driver=SQL+Server"
225
+ if "sqlncli11.dll" in os .listdir ("C:\\ Windows\\ System32" ):
226
+ conn = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+11.0"
227
+ self ._connection_format = conn
228
+ conn_string = self ._connection_format % (
229
+ conn_dict ['engine' ], driver , conn_dict ['user' ], conn_dict ['password' ], conn_dict ['address' ],
230
+ conn_dict ['db' ])
200
231
elif conn_dict ['engine' ] == 'mysql' :
201
232
driver = "pymysql"
233
+ conn_string = self .constringBuilder (conn_dict , driver )
202
234
elif conn_dict ['engine' ] == 'postgresql' :
203
235
driver = "psycopg2"
236
+ conn_string = self .constringBuilder (conn_dict , driver )
204
237
else :
205
238
driver = "None"
239
+ conn_string = self .constringBuilder (conn_dict , driver )
240
+
241
+
242
+ # print "******", conn_string
243
+ return conn_string
206
244
207
- conn_string = connformat % (
245
+ def constringBuilder (self , conn_dict , driver ):
246
+ if conn_dict ['password' ] is None or not conn_dict ['password' ]:
247
+ conn_string = self ._connection_format_nopassword % (
248
+ conn_dict ['engine' ], driver , conn_dict ['user' ], conn_dict ['address' ],
249
+ conn_dict ['db' ])
250
+ else :
251
+ conn_string = self ._connection_format % (
208
252
conn_dict ['engine' ], driver , conn_dict ['user' ], conn_dict ['password' ], conn_dict ['address' ],
209
253
conn_dict ['db' ])
210
254
return conn_string
0 commit comments