@@ -186,25 +186,69 @@ def _get_file(self, mode):
186186 return config_file
187187
188188 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
191213 if conn_dict ['engine' ] == 'mssql' and sys .platform != 'win32' :
192214 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+ # ))
194220 conn_string = 'mssql+pyodbc:///?odbc_connect={}' .format (quoted )
195-
196221 else :
197222 if conn_dict ['engine' ] == 'mssql' :
198223 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' ])
200231 elif conn_dict ['engine' ] == 'mysql' :
201232 driver = "pymysql"
233+ conn_string = self .constringBuilder (conn_dict , driver )
202234 elif conn_dict ['engine' ] == 'postgresql' :
203235 driver = "psycopg2"
236+ conn_string = self .constringBuilder (conn_dict , driver )
204237 else :
205238 driver = "None"
239+ conn_string = self .constringBuilder (conn_dict , driver )
240+
241+
242+ # print "******", conn_string
243+ return conn_string
206244
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 % (
208252 conn_dict ['engine' ], driver , conn_dict ['user' ], conn_dict ['password' ], conn_dict ['address' ],
209253 conn_dict ['db' ])
210254 return conn_string
0 commit comments