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