使用备用unixODBC安装

时间:2011-10-24 21:07:30

标签: python sql-server pyodbc freetds unixodbc

我正在一个在组织范围内集中安装的驱动器上安装了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安装而不是主驱动器上安装的那个

3 个答案:

答案 0 :(得分:6)

pyodbc在自定义设置中安装很棘手。您需要编辑setup.py脚本,通过添加类似

的内容从您的自定义位置查找unixODBC
settings['include_dirs'] = ['/opt/local/include']
settings['library_dirs'] = ['/opt/local/lib']

get_compiler_settings功能。

答案 1 :(得分: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')

答案 2 :(得分:0)

问题可能是因为它查看了全局的ini文件。您可以通过定义odbc.ini

来设置查找odbcinst.iniODBCSYSINI=/path/to/location/of/inifiles文件的位置