我正在构建一个应用程序,该应用程序应该与特定数据库服务器(Openlink Virtuoso 实例)建立 ODBC 连接。
到目前为止,我一直在使用
odbc.ini
文件中指定的 DSN,并且工作正常。但现在我正在尝试让应用程序加载 DSN 信息。
我在
FILEDSN
中尝试了一个简单的connString
,但看起来pyodbc
不使用指定的文件:
pyodbc.connect("FILEDSN=<path-to-file>.dsn;UID=<uid>;PWD=<pwd>")
产生以下错误:
pyodbc.InterfaceError: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found and no default driver specified (0) (SQLDriverConnect)')
.dsn
文件包含与该 DSN 下我的 odbc.ini
文件中完全相同的信息:
[ODBC]
Driver = /usr/lib/virtodbc_r.so
Address = <my-endpoint>
事实上,正是
unixODBC
发送了错误消息,这让我觉得 pyodbc
甚至没有读取我的 .dsn 文件,因为如果它读取了,它将使用不同的驱动程序(Virtuoso ODBC 驱动程序)。关于 pyodbc 或 connStrings 我缺少什么吗?
注意:我现在已经设法通过无 DSN 连接来规避这个问题,但是从 ENV 变量而不是正确的 DSN 定义获取必要的信息看起来是一种不好的做法。
根据文档:
“unixODBC 目前不支持 FILEDSN,但当我有时间时它会支持。”