我正在使用以下代码查询SQL Server数据库,并将返回的结果存储在CSV文件中。
import pypyodbc
import csv
connection = pypyodbc.connect('Driver={SQL Server};'
'Server=localhost;'
'Database=testdb;')
cursor = connection.cursor()
SQLCommand = (""" SELECT A as First,
SELECT B as Second,
FROM AB """)
cursor.execute(SQLCommand)
results = cursor.fetchall()
myfile = open('test.csv', 'w')
wr = csv.writer(myfile,dialect='excel')
wr.writerow(results)
connection.close()
SQL命令只是一个示例,我的查询包含更多列,这只是为了清酒。
使用此代码,我的CSV如下所示:
但是我希望我的CSV看起来像这样,而且我希望标题也显示出来,就像这样:
我猜测格式需要在代码的'csv.writer'部分内完成,但我似乎无法弄明白。有人可以指导我吗?
答案 0 :(得分:0)
您看到的是奇怪的输出,因为fetchall
返回多行输出,但您使用writerow
而不是writerows
将其转储出去。您需要使用writerow
输出一行列标题,然后输出writerows
以输出实际结果:
with open(r'C:\Users\Gord\Desktop\test.csv', 'w', newline='') as myfile:
wr = csv.writer(myfile)
wr.writerow([x[0] for x in cursor.description]) # column headings
wr.writerows(cursor.fetchall())
cursor.close()
connection.close()