我在Snow Leopard上安装了py27-odbc的mac ports软件包。由于OSX不再提供ODBC Administrator应用程序,因此我安装了OpenLink ODBC管理器。安装完成后,我为远程数据库创建了一个DSN,并使用iodbctest实用程序验证配置是否正常。然后我尝试使用pyodbc连接到数据库:
import pyodbc
cnxn = pyodbc.connect('DSN=my-dsn-name;UID=joe;PWD=secret')
我得到以下可爱的错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name
not found, and no default driver specified (0) (SQLDriverConnectW)')
为什么pyodbc找不到ODBC驱动程序和/或我的DSN配置?
更新(因为我无法回答我自己的问题)
系统似乎将ODBC配置数据存储在/ Library / ODBC中,但Mac端口将配置存储在/ opt / local / etc中。这解释了为什么iodbctest有效,但是pyodbc扼流圈。最干净的解决方案似乎只是从Mac Ports位置符号链接到系统位置,这样一组通用的配置文件就可以用于任何工具,无论它在哪里寻找这些信息:
sudo ln -s /Library/ODBC/odbc.ini /opt/local/etc/odbc.ini
sudo ln -s /Library/ODBC/odbcinst.ini /opt/local/etc/odbcinst.ini