您好我目前在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()
答案 0 :(得分:4)
您可以使用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.)')
答案 1 :(得分:0)
您可以使用 Dim DepCom As New SqlCommand("Select * From Departments", con)
Dim DepAdap As New SqlDataAdapter(DepCom)
Dim DepDT As New DataTable
DepAdap.Fill(DepDT)
ListBox1.DataSource = DepDT
ListBox1.DisplayMember = "DepartmentName"
ListBox1.ValueMember = "DepartmentID"
/ try
块,仅捕获except
:
pyodbc.Error
祝你好运!
答案 2 :(得分:0)
正如@Adonis建议的那样,考虑构建一个特定于每个用户的配置文件,然后将其读入以连接到数据库。这也提供了更高的安全性,因为代码不会立即公开凭证:
构建配置 .ini文件(要对每个用户运行一次;调整所需文件夹的写入路径)
import configparser
config = configparser.ConfigParser()
config['SQL_SERVER'] = {'DRIVER': 'ODBC Driver 13 for SQL Server',
'SERVER': '****',
'DATABASE': '****',
'Trusted_Connection': 'yes',
}
with open('db_connect.ini', 'w') as configfile:
config.write(configfile)
数据库连接 (常规连接,调整所需文件夹的读取路径)
import configparser
import pyodbc
config = configparser.ConfigParser()
config.read('db_connect.ini')
constr = 'DRIVER={{{drv}}};SERVER={srv};DATABASE={db};Trusted_Connection={tc};'\
.format(drv=config['SQL_SERVER']['DRIVER'],
srv=config['SQL_SERVER']['SERVER'],
db=config['SQL_SERVER']['DATABASE'],
tc=config['SQL_SERVER']['Trusted_Connection'])
conn = pyodbc.connect(constr)