我已经在这几个小时了。我无法通过pyodbc连接到数据库,但我可以使用tsql和isql连接。
我现在只是在尝试(这可能是错误的,但说明了我的观点):
import pyodbc
pyodbc.connect("DRIVER={dev};SERVER=epdbdev01;DATABASE=something;USER=epnet2;OPTION=3;")
我得到了这个:
Error: ('00000', '[00000] [iODBC][Driver Manager]dlopen({dev}, 6): image not found (0) (SQLDriverConnect)')
我可以通过isql连接就好了,为了好玩:
$ isql -v dev_fail user pass
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect
$ isql -v dev user pass
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
你可以看到,如果我使用了无效的DSN,我可能会出错,并且使用了正确的DSN。现在,错误DSN的错误与我使用pyodbc时出现的错误相同,所以似乎是划掉了。
我挣扎于此我已经多次重新安排了一些事情,现在我的odbc.ini和odbcinst.ini从我的自制安装到我的家庭目录的sym链接如下:
.freetds.conf -> /usr/local/Cellar/freetds/0.91/etc/freetds.conf
.odbc.ini -> /usr/local/Cellar/unixodbc/2.3.2/etc/odbc.ini
.odbcinst.ini -> /usr/local/Cellar/unixodbc/2.3.2/etc/odbcinst.ini
最后,我的odbc.ini和odbcinst.ini文件:
ODBC.INI
[dev]
Driver = FreeTDS
Description = please work
ServerName = epdbdev01
UID = user
PWD = pass
ODBCINST.INI
[FreeTDS]
Description = FreeTDS
Driver = /usr/local/Cellar/freetds/0.91/lib/libtdsodbc.so
Setup = /usr/local/Cellar/freetds/0.91/lib/libtdsodbc.so
client charset = utf-8
pyodbc是否在某处找不到我想要的驱动程序信息?我正处于这个杂草上,我可能已经克服了一些问题,但是如果isql工作,我会想象pyodbc会依赖于相同的连接信息,但显然现在。
答案 0 :(得分:1)
最后,我将odbc.ini
和odbcinst.ini
放在/etc
。此外,我使用freetds
命令从homebrew
重新安装了--with-unixodbc
并且它有效。第5次阅读blog by JD Long有助于我iODBC
vs unixODBC
断开连接。