Skip to content

Commit ccfd530

Browse files
author
stephanie
committed
fix connection
1 parent 00aa734 commit ccfd530

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

odmtools/odmdata/memory_database.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ def rollback(self):
9090
# self.mem_service._session_factory.engine.connect().connection.rollback()
9191
#self.updateDF()
9292

93+
#TODO is there a way to do a single rollback
94+
def rollbacksingle(self):
95+
pass
96+
97+
9398
def update(self, updates):
9499
'''
95100
updates : list of dictionary that contains 2 items, id and value

odmtools/odmservices/service_manager.py

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -189,27 +189,52 @@ def _get_file(self, mode):
189189
return config_file
190190

191191
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+
194195
if conn_dict['engine'] == 'mssql' and sys.platform != 'win32':
195196
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+
# ))
197202
conn_string = 'mssql+pyodbc:///?odbc_connect={}'.format(quoted)
203+
198204
elif conn_dict['engine']=='sqlite':
199205
connformat = "%s:///%s"
200206
conn_string = connformat%(conn_dict['engine'], conn_dict['address'])
201207
else:
202208
if conn_dict['engine'] == 'mssql':
203209
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'])
205217
elif conn_dict['engine'] == 'mysql':
206218
driver = "pymysql"
219+
conn_string = self.constringBuilder(conn_dict, driver)
207220
elif conn_dict['engine'] == 'postgresql':
208221
driver = "psycopg2"
222+
conn_string = self.constringBuilder(conn_dict, driver)
209223
else:
210224
driver = "None"
225+
conn_string = self.constringBuilder(conn_dict, driver)
211226

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 % (
213238
conn_dict['engine'], driver, conn_dict['user'], conn_dict['password'], conn_dict['address'],
214239
conn_dict['db'])
215240
return conn_string

0 commit comments

Comments
 (0)