Попытка подключить скрипт 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)
Соединение установлено правильно установлен или, по крайней мере, возвращает правильный объект. И я уверяю, что есть таблица, которая соответствует запросу:
Некоторый предыдущий шум относительно аналогичной ошибки, которая предположительно была исправлена в последующих выпусках: 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