use*_*433 2 python oracle export-to-csv
我是 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)
Run Code Online (Sandbox Code Playgroud)
现在它打印出来像这样“(10001965,'0828442C00548')”,“(10001985,'0696230C35242')”,“(10001986,'C41251')”
我希望它打印管道分隔符并在行末尾打印一个新行。谢谢你的帮助!10001965|0828442C00548\n 10001985|0696230C35242\n 10001986|C41251\n
要获取管道符号作为分隔符,可以在创建 writer 时传入“delimiter”参数:
c = csv.writer(open("C:\mystuff\output.csv","wb"), 分隔符="|")
您还可以添加行终止符参数:
c = csv.writer(open("C:\mystuff\output.csv","wb"), 分隔符="|", 行终止符="\n")
虽然它应该默认为“\r\n”
我认为您在调用“writerow”时也可能遇到问题。数据库结果是元组列表,要将其正确写入 csv 文件,您应该使用“writerows”(注意函数的复数形式)。这应该正确处理列表并将数据库值对放在单独的行上,并用管道正确分隔。目前,您的代码正在写入一“行”,这就是为什么没有换行符分隔数据值的原因。
新代码:
c = csv.writer(open("C:\mystuff\output.csv","wb"), 分隔符="|")
c.writerows(结果)