3

我在一个将 unixODBC 安装在组织范围的集中安装驱动器上的环境中工作,但我们(实际开发人员)不允许在其中安装驱动程序或数据源。这一切都是倒退的,但我必须忍受它。

现在我正在尝试构建一个从这个 unix enviro 连接到 mssql 2005 服务器的 python 应用程序,所以我显然需要一些 sql 驱动程序!

我通过在我可以完全控制的驱动器的一部分上重新安装 unixODBC 来避免无法访问预安装的 unixODBC。我已经安装了 freeTDS 并配置了所有内容,以便我可以使用 isql 成功连接到服务器——太棒了!

现在唯一的问题是,当我在我的 python 程序(使用 pyodbc)中执行一行时,例如:

import pyodbc
pyodbc.connect("DSN=<dsn_name>;UID=...;PWD=...", autocommit=True)

我明白了

 ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnectW)')

我认为这是因为 pyodbc 仍在寻找原始的 unixODBC 安装,而不是我的本地安装。所以我想知道:

如何配置我的脚本以查找我的本地 unixODBC 安装,而不是安装在主驱动器上的那个

4

3 回答 3

6

在自定义设置中安装 pyodbc 很棘手。您需要编辑setup.py脚本以通过添加类似的内容从您的自定义位置查找 unixODBC

settings['include_dirs'] = ['/opt/local/include']
settings['library_dirs'] = ['/opt/local/lib']

发挥get_compiler_settings作用。

于 2011-10-24T21:45:47.200 回答
2

感谢上面的回答 - 它让我在 setup.py 中编辑 get_compiler_settings 告诉它不要使用默认的 iodbc。

对我有用的(OS X 10.9,pyodbc 3.0.7)是:

elif sys.platform == 'darwin':
    # OS/X now ships with iODBC.
    #settings['libraries'].append('iodbc')

    # but I don't want to use iodbc, I want to use brewed unixodbc 
    settings['libraries'].append('odbc')
于 2013-10-25T19:54:22.457 回答
0

问题可能是因为它在全局 ini 文件中查找。您可以通过定义来设置它查找odbc.iniodbcinst.ini文件的位置ODBCSYSINI=/path/to/location/of/inifiles

于 2011-11-01T15:42:51.687 回答