Возникла ошибка: ProgrammingError: переменная LOB больше не действительна после последующей выборки - PullRequest
0 голосов
/ 26 июня 2018

Я выбрал записи из базы данных в mylist и затем хочу использовать функцию .decode для каждого из элементов списка, но это дает мне AttributeError: у объекта 'cx_Oracle.LOB' нет атрибута 'decode', поэтому я пытаюсь преобразовать элементы в строку перед использованием функции .decode, но я сталкиваюсь с ошибкой ниже для некоторых элементов в списке:

mylist [rr] = [str (x) для x в mylist [rr]]

ProgrammingError: переменная LOB больше не действительна после последующей выборки

1 Ответ

0 голосов
/ 26 июня 2018

У вас есть несколько вариантов здесь:

(1) обновление до cx_Oracle 6.x, которое устранило эту ошибку

(2) использовать итератор для обработки курсора вместо cursor.fetchall ()

(3) если возвращаемые CLOB достаточно малы, используйте обработчик выходного типа, чтобы преобразовать большой объект в строку, что также повышает производительность благодаря сокращению количества обращений к базе данных (см. https://github.com/oracle/python-cx_Oracle/blob/master/samples/ReturnLobsAsStrings.py)

Надеюсь, один из этих вариантов будет работать для вас!

...