@@ -17,7 +17,6 @@ async def get_db_connection():
1717 database = config .sqldb_database
1818 username = config .sqldb_username
1919 password = config .sqldb_database
20- driver = config .driver
2120 # mid_id = config.mid_id
2221 mid_id = config .azure_client_id
2322
@@ -33,22 +32,35 @@ async def get_db_connection():
3332 )
3433 SQL_COPT_SS_ACCESS_TOKEN = 1256
3534
36- # Set up the connection
37- connection_string = f"DRIVER={ driver } ;SERVER={ server } ;DATABASE={ database } ;"
38- conn = pyodbc .connect (
39- connection_string , attrs_before = {SQL_COPT_SS_ACCESS_TOKEN : token_struct }
40- )
41-
42- logging .info ("Connected using Azure Credential" )
43- return conn
44- except pyodbc .Error as e :
35+ # Try both ODBC Driver 18 and 17
36+ conn = None
37+ for driver in ["{ODBC Driver 18 for SQL Server}" , "{ODBC Driver 17 for SQL Server}" ]:
38+ try :
39+ connection_string = f"DRIVER={ driver } ;SERVER={ server } ;DATABASE={ database } ;"
40+ conn = pyodbc .connect (
41+ connection_string , attrs_before = {SQL_COPT_SS_ACCESS_TOKEN : token_struct }
42+ )
43+ logging .info (f"Connected using Azure Credential with { driver } " )
44+ return conn
45+ except pyodbc .Error :
46+ continue
47+
48+ if conn is None :
49+ raise RuntimeError ("Unable to connect using ODBC Driver 18 or 17 with Azure Credential" )
50+ except Exception as e :
4551 logging .error ("Failed with Azure Credential: %s" , str (e ))
46- conn = pyodbc .connect (
47- f"DRIVER={ driver } ;SERVER={ server } ;DATABASE={ database } ;UID={ username } ;PWD={ password } " ,
48- timeout = 5 )
49-
50- logging .info ("Connected using Username & Password" )
51- return conn
52+ # Try username/password authentication with both drivers
53+ for driver in ["{ODBC Driver 18 for SQL Server}" , "{ODBC Driver 17 for SQL Server}" ]:
54+ try :
55+ conn = pyodbc .connect (
56+ f"DRIVER={ driver } ;SERVER={ server } ;DATABASE={ database } ;UID={ username } ;PWD={ password } " ,
57+ timeout = 5 )
58+ logging .info (f"Connected using Username & Password with { driver } " )
59+ return conn
60+ except pyodbc .Error :
61+ continue
62+
63+ raise RuntimeError ("Unable to connect using ODBC Driver 18 or 17. Install driver msodbcsql17/18." )
5264 finally :
5365 if credential and hasattr (credential , "close" ):
5466 await credential .close ()
0 commit comments