我正在一个在组织范围内集中安装的驱动器上安装了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安装而不是主驱动器上安装的那个
答案 0 :(得分:6)
pyodbc在自定义设置中安装很棘手。您需要编辑setup.py
脚本,通过添加类似
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.ini
和ODBCSYSINI=/path/to/location/of/inifiles
文件的位置