python - 在使用 Python 和 pypyodbc 的 Windows 上,如何列出可用的驱动程序?

标签 python pypyodbc

对于许多人共享的 python 脚本,我需要一个解决方案来检测用户驱动程序,以便我可以动态构建连接字符串。我目前使用的操作系统环境 COMPUTERNAME 如下:

if os.environ['COMPUTERNAME'] == 'MattsDesktop':
print("You are using: Oracle 12")
    self.DataConnectOracle = 'DRIVER={Oracle in 12cR1client32bit};SERVER=Xyz;DBQ=DEVenv;UID=AllDev;PWD=Secret2Secret'

但是每当用户进行更改时都必须更新。看来我应该能够获取他们的驱动程序信息,而不必维护这些 if。

最佳答案

虽然它不会为您提供驱动程序的确切版本,但 pypyodbc.drivers() 将为您提供驱动程序的名称 Windows 上可用的驱动程序。这应该足够了,因为您只需要驱动程序名称(而不是版本)来构造连接字符串。

例如,在我的机器上

import pypyodbc
drivers_list = sorted(pypyodbc.drivers())
for driver_name in drivers_list:
    print(driver_name)

打印

Driver da Microsoft para arquivos texto (*.txt; *.csv)
Driver do Microsoft Access (*.mdb)
Driver do Microsoft Excel(*.xls)
Driver do Microsoft Paradox (*.db )
Driver do Microsoft dBase (*.dbf)
Driver para o Microsoft Visual FoxPro
Microsoft Access Driver (*.mdb)
Microsoft Access Driver (*.mdb, *.accdb)
Microsoft Access Text Driver (*.txt, *.csv)
Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)
Microsoft Access-Treiber (*.mdb)
Microsoft Excel Driver (*.xls)
Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
Microsoft Excel-Treiber (*.xls)
Microsoft FoxPro VFP Driver (*.dbf)
Microsoft ODBC for Oracle
Microsoft Paradox Driver (*.db )
Microsoft Paradox-Treiber (*.db )
Microsoft Text Driver (*.txt; *.csv)
Microsoft Text-Treiber (*.txt; *.csv)
Microsoft Visual FoxPro Driver
Microsoft Visual FoxPro-Treiber
Microsoft dBase Driver (*.dbf)
Microsoft dBase VFP Driver (*.dbf)
Microsoft dBase-Treiber (*.dbf)
MySQL ODBC 5.3 ANSI Driver
MySQL ODBC 5.3 Unicode Driver
ODBC Driver 11 for SQL Server
SQL Server
SQL Server Native Client 11.0
SQLite3 ODBC Driver

对于 Oracle 驱动程序的列表,我可以使用

oracle_list = [x for x in pypyodbc.drivers() if "Oracle" in x]

关于python - 在使用 Python 和 pypyodbc 的 Windows 上,如何列出可用的驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44703409/

相关文章:

python - 融合表导入行

python - 设计中的嵌套字典可以吗?

sql - 加快 Python 执行速度

Python:为列和值设置参数 pypyodbc - executemany

python - 任何使分布式进程以最解耦的方式与关系数据库交互的 Python 解决方案?

python:如何覆盖str.join?

python - 加速networkx中的随机最小生成树?

python - 如何将 .accdb 文件导入 Python 并使用数据?

Python pypyodbc 如何将变量插入到执行语句中?

python - MSSQL 'Numeric Value Out of Range' 20 位 python Long Int 到 Numeric(24,0) 列时出错