pypyodb c при подключении к Filemaker выдает ошибку «индекс списка вне диапазона» - PullRequest
0 голосов
/ 22 января 2020

Попытка подключить скрипт python к нашей базе данных filemaker. Он работал с предыдущей копией базы данных, но недавно подключился к новой версии и начал выдавать ошибку «индекс списка вне диапазона» при попытке получить таблицу из БД.

Использование Python 3.7.4, pypyodb c 1.3.4 и filemaker Pro 13.0v3 Также использование драйвера Filemaker ODB C 13.2.14

query = 'SELECT * FROM Projects'
con_str = "DSN=%s;Database=%s;UID=%s;PWD=%s" % (DSN, DB, User, PW)
with pypyodbc.connect(con_str) as connection:
    cursor = connection.cursor()              
    cursor.execute(query)

Соединение установлено правильно установлен или, по крайней мере, возвращает правильный объект. И я уверяю, что есть таблица, которая соответствует запросу: List of tables

Некоторый предыдущий шум относительно аналогичной ошибки, которая предположительно была исправлена ​​в последующих выпусках: pypyodb c execute возвращает индекс списка из-за ошибки диапазона

также пытался установить для параметра Autocommit значение True, но все равно получалось сообщение об ошибке:

Любая помощь приветствуется.

Редактировать - добавлено обратная связь по запросу:

    <ipython-input-8-de64dadd5741> in <module>
      4 with pypyodbc.connect(con_str, autocommit = True) as connection:
      5     cursor = connection.cursor()
----> 6     cursor.execute(query)
      7     import pdb; pdb.set_trace()
      8 

~\AppData\Local\Continuum\anaconda3\envs\submittal_client_env\lib\site-packages\pypyodbc.py in execute(self, query_string, params, many_mode, call_mode)
   1624 
   1625         else:
-> 1626             self.execdirect(query_string)
   1627         return self
   1628 

~\AppData\Local\Continuum\anaconda3\envs\submittal_client_env\lib\site-packages\pypyodbc.py in execdirect(self, query_string)
   1652         check_success(self, ret)
   1653         self._NumOfRows()
-> 1654         self._UpdateDesc()
   1655         #self._BindCols()
   1656         return self

~\AppData\Local\Continuum\anaconda3\envs\submittal_client_env\lib\site-packages\pypyodbc.py in _UpdateDesc(self)
   1774                 10, ADDR(c_short()),ADDR(Cdisp_size))
   1775             if ret != SQL_SUCCESS:
-> 1776                 check_success(self, ret)
   1777 
   1778             if force_unicode:

~\AppData\Local\Continuum\anaconda3\envs\submittal_client_env\lib\site-packages\pypyodbc.py in check_success(ODBC_obj, ret)
   1005     if ret not in (SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA):
   1006         if isinstance(ODBC_obj, Cursor):
-> 1007             ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
   1008         elif isinstance(ODBC_obj, Connection):
   1009             ctrl_err(SQL_HANDLE_DBC, ODBC_obj.dbc_h, ret, ODBC_obj.ansi)

~\AppData\Local\Continuum\anaconda3\envs\submittal_client_env\lib\site-packages\pypyodbc.py in ctrl_err(ht, h, val_ret, ansi)
    970             #No more data, I can raise
    971             #print(err_list[0][1])
--> 972             state = err_list[0][0]
    973             err_text = raw_s('[')+state+raw_s('] ')+err_list[0][1]
    974             if state[:2] in (raw_s('24'),raw_s('25'),raw_s('42')):

IndexError: list index out of range`enter code here`
    enter code here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...