我正在尝试使用 pyodbc 在便携式应用程序中连接到 SQL Server(MS SQL Server 通过 FreeTDS);因为它应该是独立的,所以我想避免必须在系统上显式安装驱动程序,只需将 ODBC 驱动程序 dll 与应用程序一起带来即可。
这一页 http://old.vk.pp.ru/docs/sybase-any/interfaces/00000040.htm建议可以直接在连接字符串中指定驱动程序 dll
-
指定DRIVER=
中的参数szConnStrIn
论证SQLDriverConnect
功能。例如:
szConnStrIn = "driver=ospath/dbodbc6.dll;dbf=c:\asademo.db"
where ospath
是 Adaptive Server Anywhere 安装目录的操作系统子目录。
通过 pyodbc+ 尝试libtdsodbc.so
在 Linux 上,它确实工作得很好;但是,在 Windows 上尝试相同的操作(pyodbc+tdsodbc.dll
)我总是得到
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序 (0) (SQLDriverConnect)')
(my libtdsodbc.so
不过,似乎没问题,因为如果我将其安装为“常规”驱动程序并使用其名称引用它,则连接正常)
检查的文档SQLDriverConnect https://msdn.microsoft.com/en-us/library/ms715433(v=vs.85).aspx和相关页面没有提及DRIVER=
直接与 dll 路径一起使用的选项。
那么,Windows 上不是不支持“直接到 driver-dll”连接吗?是否有任何替代方案(尤其是使用 Python)可以绕过 ODBC 驱动程序管理器直接连接到驱动程序 dll?
Like TallTed 的回答 https://stackoverflow.com/a/54868650/775243提到,您链接的文档包含相当多的信息(但可能当时不存在),并且它的含义也很明确driver
范围:
SQLDrivers 函数返回的驱动程序的描述。为了
例如,Rdb 或 SQL Server。
由此可见,它是not有效指示 Windows 中的路径(至少使用默认的 ODBC 实现)。
一般来说,如果不注册 ODBC 驱动程序,似乎也无法使用它,这需要管理员权限。这个答案 https://stackoverflow.com/a/42684077/775243列出一些选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)