我在一个环境中工作,该环境将unixODBC安装在组织范围的集中安装驱动器上,但是我们(实际的开发人员)不允许在其中安装驱动程序或数据源。这一切都是倒退的,但我不得不接受它。
现在,我正在尝试构建一个python应用程序,从这个unix环境连接到MSSQL2005服务器,所以我显然需要一些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安装,而不是安装在主驱动器上的安装
发布于 2011-10-25 05:45:47
pyodbc很难在自定义安装中安装。您需要编辑setup.py脚本,以便通过添加如下内容从自定义位置查找unixODBC
settings['include_dirs'] = ['/opt/local/include']
settings['library_dirs'] = ['/opt/local/lib']转到get_compiler_settings函数。
发布于 2013-10-26 03:54:22
感谢上面的回答-它让我在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')发布于 2011-11-01 23:42:52
问题可能是因为它在全局ini文件中查找。您可以通过定义ODBCSYSINI=/path/to/location/of/inifiles来设置它查找odbc.ini和odbcinst.ini文件的位置
https://stackoverflow.com/questions/7881985
复制相似问题