使用python将查询结果打印到以管道分隔的fi

2024-03-28 16:19:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 文件csvimport脚本管道connectresultconnection
2条回答

它打印出一个字符串列表?您可以使用"|".join(string.split(','))将曾经用逗号分隔为管道分隔的字符串连接起来。并且,在列表上使用'\n'.join(list)来获得换行符。这不会在末尾添加新行,因此如果您想这样做,只需在结果中添加+ '\n'。在

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

c=csv.writer(打开(“C:\mystuff\输出.csv“,”wb“),分隔符=“|”)

也可以添加lineterminator参数:

c=csv.writer(打开(“C:\mystuff\输出.csv“,”wb“),分隔符=”,lineterminator=“\n”)

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

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

新代码:

c=csv.writer(打开(“C:\mystuff\输出.csv“,”wb“),分隔符=“|”)

c.writerows(结果)

相关问题 更多 >