pypyodbc не подключается, когда isql подключается?

pypyodbc работал у меня в прошлом, но по какой-то причине не работает. У меня это определено в ~ / .odbc.ini

[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 это было не так. Я также обнаружил ошибку, которая, по-видимому, использовала просто для отправки первого письма, и подумал, что, может быть, у меня как-то возникла эта проблема, но я не мог понять, где я ее найду.

Как я могу заставить это снова работать?


person Wayne Werner    schedule 01.10.2014    source источник
comment
Возможно, это видео поможет вам   -  person Mauro Baraldi    schedule 01.10.2014
comment
К сожалению, удаление моего набора данных не повлияло   -  person Wayne Werner    schedule 01.10.2014


Ответы (1)


Ваш сценарий Python не работает, потому что as400 - это имя созданного ODBC DSN, поэтому вам нужно использовать DSN=as400 вместо Driver={as400} в строке подключения.

person Gord Thompson    schedule 05.11.2014
comment
Не повезло - 'DSN=as400;System...' выдал ту же ошибку. - person Wayne Werner; 06.11.2014