我需要将针对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