cursor.fetchall () выбрасывает индекс или ошибку диапазона - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть проблема, которая я не уверен, где первопричина:

Я использую python cx_Oracle для подключения к БД Oracle.

cursor.fetchall() возвращает мне записи в этом формате[(4352,)]

Я хочу получить '4352', поэтому я продолжаю делать это: pk = cursor.fetchall()[0][0]

Однако я получаю: IndexError: list index out of range

Iя не уверен, что я делаю неправильно, так как, когда я вручную создаю этот объект возврата на своей консоли python, как: item = [(4352,)], я могу получить '4352', вызвав item[0][0]

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Я понял, что пошло не так.

В своем коде я сделал что-то вроде этого:

print(cursor.fetchall()) # line 56
a = cursor.fetchall()[0][0] # line 57

В строке 56 вывод [(4352,)] правильный.Однако в строке 57 cursor.fetchall() становится [].Это потому, что cursor.fetchall () является генератором.Он был автоматически собран после строки 56.

Поэтому, если я хотел извлечь 4352 из внутреннего кортежа, мне сначала нужно было вызвать строку 57 и затем вывести (а), если я хотел увидетьзначение возвращаемого результата из базы данных.

0 голосов
/ 23 ноября 2018

Вы уверены в списке, возвращаемом оператором fetchall ()?

Похоже, что результирующий список пуст.

...