我是python的初学者,我正在尝试将查询结果打印到管道分隔文件中。我该如何修改此脚本?

import cx_Oracle
import csv

connection = cx_Oracle.connect("blah blah blah connection stuff")
cursor = connection.cursor()
cursor.execute("select column1, column2 from schema.table")
result=cursor.fetchall()
c = csv.writer(open("C:\mystuff\output.csv","wb"))
c.writerow(result)


现在它像这样打印出来
“(10001965,'0828442C00548')”,“(10001985,'0696230C35242')”,“(10001986,'C41251')”

我希望它打印定界的管道,并在行的末尾添加新行。谢谢你的帮助!
10001965 | 0828442C00548 \ n
10001985 | 0696230C35242 \ n
10001986 | C41251 \ n

最佳答案

要获得管道符号作为分隔符,可以在创建编写器时传递“ delimiter”参数:

c = csv.writer(open(“ C:\ mystuff \ output.csv”,“ wb”),分隔符=“ |”)

您还可以添加一个lineterminator参数:

c = csv.writer(open(“ C:\ mystuff \ output.csv”,“ wb”),分隔符=“ |”,换行符=“ \ n”)

尽管应该默认为“ \ r \ n”

我认为您对“ writerow”的调用也可能有问题。 db结果是一个元组列表,为了将其正确写入csv文件,您应该使用“ writerows”(注意函数的复数形式)。这应该正确处理列表,并将成对的db值放在单独的行中,并用管道正确分隔。当前,您的代码正在编写一个“行”,这就是为什么没有换行符分隔数据值的原因。

新代码:

c = csv.writer(open(“ C:\ mystuff \ output.csv”,“ wb”),分隔符=“ |”)

c.writerows(结果)

关于python - 使用python打印查询结果以管道分隔文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12733601/

10-13 07:32