使用python将查询结果打印到管道分隔文件

问题描述 投票:1回答:2

我是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

python oracle export-to-csv
2个回答
4
投票

要将管道符号作为分隔符,您可以在创建编写器时传入“分隔符”参数:

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

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

c = csv.writer(open(“C:\ mystuff \ output.csv”,“wb”),delimiter =“|”,lineterminator =“\ n”)

虽然它应该默认为“\ r \ n”

我想你也可能对“写作”的调用有问题。 db结果是一个元组列表,要正确地将它写入csv文件,你应该使用“writerows”(注意函数的复数形式)。这应该正确处理列表并将db值对放在单独的行上,并用管道正确分隔。目前,您的代码正在写一个“行”,这就是没有新行分隔数据值的原因。

新代码:

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

c.writerows(结果)


0
投票

它打印出一个字符串列表?您可以使用"|".join(string.split(','))来连接以逗号分隔的字符串以进行管道分隔。并且,在列表中使用'\n'.join(list)来获取换行符。这不会在最后添加换行符,所以如果你想要那个,只需要+ '\n'到结果。

© www.soinside.com 2019 - 2024. All rights reserved.