我已经忙了好几个小时了。我无法通过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现在从我的自制设备连接到我的家庭dir,如下所示:
.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 = passodbcinst.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-8pyodbc会在我刚刚失踪的某个地方寻找司机信息吗?我在这个问题上陷入困境,我可能已经划掉了一些东西,但是如果isql起作用的话,我会想象pyodbc会收集同样的连接信息,但显然是现在。
发布于 2014-02-27 15:45:59
最后,我把odbc.ini和odbcinst.ini放在/etc上。此外,我用freetds命令从homebrew中重新安装了--with-unixodbc,并且工作正常。第五次阅读这个JD Long博客帮助我获得了iODBC vs unixODBC的断开连接。
https://stackoverflow.com/questions/22047544
复制相似问题