我正在尝试连接到oracle表并执行sql。我需要将结果集导出到csv文件。我的代码如下:
import pyodbc
import csv
cnxn = pyodbc.connect("DSN=11g;UID=test101;PWD=passwd")
cursor = cnxn.cursor()
cursor.execute(sql)
row = cursor.fetchall()
with open('data.csv', 'w', newline='') as fp:
a = csv.writer(fp, delimiter=',')
for line in row:
a.writerows(line)
cursor.close()
当我在for循环中打印到行时,我会得到这样的结果:
('Production', 'farm1', 'dc1prb01', 'web')
('Production', 'farv2', 'dc2pr2db01', 'app.3')
('Production', 'farm5', 'dc2pr2db02', 'db.3')
这不起作用。任何想法我可能会失踪?
答案 0 :(得分:6)
这将是一行的写作:
a.writerow(line)
writerows
期望迭代的迭代次数,因此它会遍历每个字符串的子字符串。
如果你想使用writer在行上调用它:
row = cursor.fetchall()
with open('data.csv', 'w', newline='') as fp:
a = csv.writer(fp, delimiter=',')
a.writerows(row)
如果您使用的是python2 remove newline=''
,则newline是* python * 3关键字:
row = cursor.fetchall()
with open('data.csv', 'w') as fp:
a = csv.writer(fp, delimiter=',')
a.writerows(row)