2014-02-26 45 views
4

我已經圍繞這一整個小時。我無法通過pyodbc連接到數據庫,但我可以同時使用tsql和isql來連接。Pyodbc連接錯誤,但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得到的錯誤是一樣的,所以看起來有些東西是交錯的。

.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 

最後:

我這個,我resintalled事情了幾次,現在我的ODBC.INI和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會搭載相同的連接信息,但現在顯然。

回答

1

最後我把odbc.iniodbcinst.ini設爲/etc。另外,我使用--with-unixodbc命令從homebrew重新安裝了freetds,它工作正常。第5次讀這個blog by JD Long幫我得到了iODBC vs unixODBC斷開。