Я использую pyodbc
для управления подключениями к базе данных. Я пытаюсь подключиться к базе данных OSI PI и получать эту ошибку:Как подключить Python 2.6 к OSI PI?
pyodbc.Error: ('IM002', "[IM002] [OSI][PI ODBC][PI]PI-API Error <pilg_getdefserverinfo> 0 (0) (SQLDriverConnectW); [01000] [Microsoft][ODBC Driver Manager] The driver doesn't support the version of ODBC behavior that the application requested (see SQLSetEnvAttr). (0)")
После разговора с продавцом, я получил такой ответ: Looks like pyodbc is written against ODBC 3.x. The OSI PI ODBC driver is using ODBC 2.0. The python ODBC driver manager will convert most ODBC 3 calls on the fly to ODBC 2 ones. Anything added to 3, however, will obviously fail. You would need to find some way to make sure that your only using 2.0 compliant ODBC calls. Currently their is not a PI ODBC driver that is compliant with ODBC 3.0.
Мой код является довольно простым, как я просто пытается подключиться на данный момент:
import pyodbc
constr = 'DRIVER={PI-ODBC};SERVER=myserver;UID=MY_UID'
pyodbc.pooling=False
conn = pyodbc.connect(constr) # Error at this line
conn.close()
Кто-нибудь подключил python к OSI PI? Если да, то как вы это сделали? Если нет, и вы все еще использовали данные в базе данных OSI, как вы в итоге получили доступ к нему?
У меня возникли проблемы с использованием пакета 'R'' RODBC' для подключения к PIODBC. Симптом состоял в том, что все запросы возвращали нулевые строки. Решение заключалось в том, чтобы установить «RODBC» для получения одной строки за раз ('rows_at_time = 1'), а также (' believeNRows = FALSE'), потому что драйвер PI ODBC испортил количество строк. http://stackoverflow.com/q/7425100/176995 –