繁体   English   中英

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

[英]use python to print query results to pipe delimited file

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

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

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(结果)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM