Dan*_*Lee 2 python sql-server odbc pyodbc python-3.x
嗨,我目前在Python 3中使用pyodbc,并且试图通过无需在不同计算机上进行手动更改而自动检测ODBC驱动程序的方法。原因是因为我的计算机具有ODBC驱动程序13,而另一位朋友的计算机具有ODBC驱动程序11,因此无论何时从侧面运行脚本,都必须先手动更改版本才能执行该过程。
谁能帮助解决这个问题?以下是我的示例代码。
谢谢
import os
import csv
import pyodbc
import datetime
from dateutil.relativedelta import relativedelta
conn = pyodbc.connect(
r'DRIVER={ODBC Driver 13 for SQL Server};'
r'SERVER=****;'
r'DATABASE=****;'
r'Trusted_Connection=yes;'
)
cursor = conn.cursor()
cursor.execute("Select * From Table1")
dData = cursor.fetchall()
Run Code Online (Sandbox Code Playgroud)
您可以使用该pyodbc.drivers()方法来检索可用驱动程序列表,然后选择所需的驱动程序,例如,
driver_name = ''
driver_names = [x for x in pyodbc.drivers() if x.endswith(' for SQL Server')]
if driver_names:
driver_name = driver_names[0]
if driver_name:
conn_str = 'DRIVER={}; ...'.format(driver_name)
# then continue with ...
# pyodbc.connect(conn_str)
# ... etc.
else:
print('(No suitable driver found. Cannot connect.)')
Run Code Online (Sandbox Code Playgroud)
您可以使用try/except块,仅捕获pyodbc.Error:
import os
import csv
import pyodbc
import datetime
from dateutil.relativedelta import relativedelta
try:
conn = pyodbc.connect(
r'DRIVER={ODBC Driver 13 for SQL Server};'
r'SERVER=blah;'
r'DATABASE=blah;'
r'Trusted_Connection=yes;'
)
except pyodbc.Error:
conn = pyodbc.connect(
r'DRIVER={ODBC Driver 11 for SQL Server};'
r'SERVER=blah;'
r'DATABASE=blah;'
r'Trusted_Connection=yes;'
)
cursor = conn.cursor()
cursor.execute("Select * From Table1")
dData = cursor.fetchall()
Run Code Online (Sandbox Code Playgroud)
祝你好运!