格式化使用pypyodbc创建的CSV文件

时间:2017-02-07 17:30:51

标签: python sql format writer pypyodbc

我正在使用以下代码查询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如下所示:

enter image description here

但是我希望我的CSV看起来像这样,而且我希望标题也显示出来,就像这样: enter image description here

我猜测格式需要在代码的'csv.writer'部分内完成,但我似乎无法弄明白。有人可以指导我吗?

1 个答案:

答案 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()