Ошибка записи Oracle BLOB в CSV с использованием Python - PullRequest
0 голосов
/ 09 июля 2019

Мне нужно записать результат запроса sql, запущенного для Oracle, в файл CSV.Запрос успешно возвращает данные, но при попытке записать данные в CSV я получаю следующую ошибку:

Traceback (most recent call last):
  File "main.py", line 29, in <module>
    my_csv.writerow(row)
TypeError: __str__ returned non-string (type bytes)

Код:

myfile = open(output_file, 'w')
my_csv= csv.writer(myfile , dialect='excel')
for row in cur:
    my_csv.writerow(row)

Один из столбцов имеет класс cx_Oracle.BLOB, вызывающий эту проблему.

Я пытался преобразовать в двоичный файл или использовать атрибут .read (), но это не помогло.

1 Ответ

0 голосов
/ 09 июля 2019

Попробуйте ссылаться на отдельные элементы списка строк и вызывать read () только для столбцов BLOB, как показано ниже. В этом примере предполагается, что таблица Oracle состоит из пяти столбцов, где первый и четвертый столбцы являются BLOB-объектами.

for row in cur:
    my_csv.writerow([row[0].read(),  # BLOB column
                     row[1],         # non-BLOB column
                     row[2],         # non-BLOB column
                     row[3].read(),  # BLOB column
                     row[4]])        # non-BLOB column
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...