在Python 3中使用Pyodbc自动检测ODBC驱动程序
大家好,我目前正在Python3中使用pyodbc,我正试图找到一种自动检测ODBC驱动程序的方法,在不同的计算机使用时不必手动更改。原因是因为我的计算机有ODBC驱动程序13,而另一个朋友的计算机有ODBC驱动程序11,所以每当我们从我们这边运行脚本时,我们必须首先手动更改版本以执行该过程 有人能帮忙解决这个问题吗?下面是我的示例代码 多谢各位在Python 3中使用Pyodbc自动检测ODBC驱动程序,python,sql-server,python-3.x,odbc,pyodbc,Python,Sql Server,Python 3.x,Odbc,Pyodbc,大家好,我目前正在Python3中使用pyodbc,我正试图找到一种自动检测ODBC驱动程序的方法,在不同的计算机使用时不必手动更改。原因是因为我的计算机有ODBC驱动程序13,而另一个朋友的计算机有ODBC驱动程序11,所以每当我们从我们这边运行脚本时,我们必须首先手动更改版本以执行该过程 有人能帮忙解决这个问题吗?下面是我的示例代码 多谢各位 import os import csv import pyodbc import datetime from dateutil.relativede
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()
您可以使用
try
/块,但
块除外,仅捕获pyodbc。错误
:
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()
祝你好运 您可以使用
pyodbc.drivers()
方法检索可用驱动程序列表,然后选择所需的驱动程序,例如
driver\u name=''
驱动程序_name=[x代表pyodbc.drivers()中的x,如果x.endswith('for SQL Server')]
如果驱动程序名称:
驱动程序名称=驱动程序名称[0]
如果驱动程序名称:
conn_str='DRIVER={};…'。格式(驱动程序名称)
#然后继续。。。
#pyodbc.connect(conn_str)
# ... 等
其他:
打印('(未找到合适的驱动程序。无法连接。))
AS @ AdoNs建议,考虑建立一个特定于每个用户的配置文件,然后读取它以连接到数据库。这还提供了更多的安全性,因为代码不会立即公开凭据:
构建配置.ini文件(针对每个用户运行一次;将写入路径调整到所需文件夹)
数据库连接(常规连接,将读取路径调整到所需文件夹)
为什么不将连接字符串放在config.ini中?然后,每个人都可以拥有自己的配置文件,具体取决于您的environment@Adonis谢谢你的反馈,你能给我举个例子吗?这是我第一次使用它,所以举个例子会很棒!我认为configparser
上的文档解释得很好:如果需要更多,请告诉我
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)