错误地将Oracle Blob写入CSV中



我需要将针对Oracle运行的SQL查询的结果写入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((属性,但没有帮助。

尝试参考行列表的各个元素,并仅在blob列上调用read((,如下所示。此示例假定一个带有五列的甲骨文表,其中第一和第四列为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