2014-10-01 93 views
2

pypyodbc在過去爲我工作,但由於某種原因,它不工作。我曾在〜/ .odbc.ini的isql不會連接pypyodbc嗎?

[as400]                    
Description    = IBM i Access ODBC Driver         
Driver     = IBM i Access ODBC Driver        
System     = mysystem          
UserID     = myuser             
Password    = mypass            
Naming     = 0               
DefaultLibraries  = QGPL             
Database    =              
ConnectionType   = 0              
CommitMode    = 2              
ExtendedDynamic   = 1              
DefaultPkgLibrary  = QGPL             
DefaultPackage   = A/DEFAULT(IBM),2,0,1,0,512        
AllowDataCompression = 1               
MaxFieldLength   = 32              
BlockFetch    = 1               
BlockSizeKB    = 128              
ExtendedColInfo   = 0               
LibraryView    = ENU             
AllowUnsupportedChar = 0              
ForceTranslation  = 0              
Trace     = 0  

這個定義,可以與$ isql as400連接就好了。

與以下程序

但是:

import pypyodbc 

conn = pypyodbc.connect("Driver={as400};System=mysystem;Uid=myuser;Pwd=mypass;") 

我得到這個錯誤:

Traceback (most recent call last): 
    File "dbtest.py", line 3, in <module> 
    conn = pypyodbc.connect("Driver={as400};System=mysystem;Uid=myuser;Pwd=mypass;") 
    File "/home/wwerner/.virtualenvs/devtools/lib/python3.4/site-packages/pypyodbc.py", line 2435, in __init__ 
    self.connect(connectString, autocommit, ansi, timeout, unicode_results, readonly) 
    File "/home/wwerner/.virtualenvs/devtools/lib/python3.4/site-packages/pypyodbc.py", line 2484, in connect 
    check_success(self, ret) 
    File "/home/wwerner/.virtualenvs/devtools/lib/python3.4/site-packages/pypyodbc.py", line 988, in check_success 
    ctrl_err(SQL_HANDLE_DBC, ODBC_obj.dbc_h, ret, ODBC_obj.ansi) 
    File "/home/wwerner/.virtualenvs/devtools/lib/python3.4/site-packages/pypyodbc.py", line 964, in ctrl_err 
    raise Error(state,err_text) 
pypyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified') 

我試圖尋找在某種方式pypyodbc源鏡像isql -v能力,但VERBOSE = True是不是。我也發現了一個bug,顯然它使用只發送第一個字母,並認爲可能以某種方式,我有這個問題,但我無法弄清楚我在哪裏找到。

我怎樣才能再次得到這個工作?

+0

也許這[視頻](https://www.youtube.com/watch?v=_5QEEQhpRbQ)可能會幫助您 – 2014-10-01 02:56:26

+0

可悲的是,刪除我的數據集沒有任何影響 – 2014-10-01 03:04:14

回答

0

你的Python腳本失敗,因爲「AS400」是您創建的ODBC DSN的名稱,所以你需要在連接字符串中使用DSN=as400而不是Driver={as400}

+0

沒有運氣 - ''DSN = as400;系統.. ''給出了同樣的錯誤。 – 2014-11-06 01:24:44