pyODBC:指定驱动程序在 Windows 中的位置

use*_*129 5 python sql windows dll pyodbc

是否可以指定 pyodbc 在哪里查找 SQL 驱动程序?

我有一个 python 应用程序,需要“SQL Native Client 10.0”驱动程序才能连接到 SQL 数据库。所以我的连接字符串如下所示:

dsn = 'DRIVER={SQL Server Native Client 10.0};SERVER=localhost;DATABASE=mydatabase;UID=sa;PWD=mypasswd'

con = pyodbc.connect(dsn) 
with con: 
    #do something
Run Code Online (Sandbox Code Playgroud)

一个主要缺点(至少对我来说)是,需要在计算机上安装 SQL Native Client 10.0 驱动程序,并且需要管理员权限。但是,我希望用户无需安装即可运行我的 python 应用程序。

在互联网上进行快速研究后,似乎 SQL Native 客户端 10.0 依赖于一个简单的 DLL (sqlncli10.dll),该 DLL 驻留在 C:\Windows\System32 中。那么是否有可能告诉 pyodbc 应该在哪里寻找合适的 SQL 驱动程序?

据我了解,pymssql 做了类似的事情(FreeTDS 驱动程序包含在 Python 包中,因此不需要进一步安装驱动程序)。然而,在我看来,pyobc 比 pymssql 更稳定(而且社区似乎也更活跃),所以我想使用 pyodbc 与我的数据库进行通信。

Gor*_*son 1

如果您的应用程序实际上使用特定于的功能

Driver={SQL Server Native Client 10.0}
Run Code Online (Sandbox Code Playgroud)

那么该驱动程序需要在客户端系统上正确安装。但是,如果您只需要与 SQL Server 的基本连接,那么

Driver={SQL Server}
Run Code Online (Sandbox Code Playgroud)

包含在标准 Windows 安装中,并且可用于 32 位和 64 位应用程序。