将MySQL查询结果保存为CSV文件

时间:2014-01-29 07:01:54

标签: python mysql csv

我有两个查询,我想将它们一起保存在一个CSV文件中。我可以单独执行此操作,但我无法弄清楚如何将这两个文件复制到一个文件中(不合并,只是将列从一个文件复制到另一个文件)所以也许我可以在SQL源查询中执行此操作。

import MySQLdb, csv
dbServer = 'localhost'
dbUser = 'root'
dbPass = 'password'
dbSchema = 'Name_of_Database'
db = MySQLdb.connect(host=dbServer, user=dbUser,passwd=dbPass,db=dbSchema)
cursor = db.cursor()
cursor.execute("""SELECT * FROM temperature_tbl WHERE Mac_Address = %s AND Date =   CURDATE() ORDER BY Time asc;""",(mac))
first_set = cursor.fetchall()

cursor.execute("""SELECT row1, row2, row3, row4 FROM temperature_tbl WHERE Mac_Address = "xx xx xx xx xx xx" AND Date = CURDATE() ORDER BY Time asc;""")
second_set = cursor.fetchall()

既然我有这两个查询的元组结果,是否可以在CSV文件中同时写入它们?例如:

csv_file = open('filename', 'w')
writer = csv.writer(csv_file)
writer.writerow(['col1', 'col2', 'col3', 'col4', 'col5', etc etc etc])
writer.writerows(first_set + second_set)
csv_file.close()

只要两个查询的结果与行标题匹配,这就是完美的。

EDIT1:好的,这个怎么样。我如何将两个元组元组连接在一起,这样我就不会延长元组的长度,而是将它们并行加入?如果我只是添加tuple1 + tuple2,它会扩展列表的长度,但我希望它们并排。 EG:

Tuple1:    Tuple2:
x,x,x,x    y,y,y,y
x,x,x,x    y,y,y,y
x,x,x,x    y,y,y,y

如果我做了tuple1 + tuple2,我得到:

x,x,x,x
x,x,x,x
x,x,x,x
y,y,y,y
y,y,y,y
y,y,y,y

我真正想要的是:

x,x,x,x,y,y,y,y
x,x,x,x,y,y,y,y
x,x,x,x,y,y,y,y

然后我可以写作()并通过删除额外的列来修改CSV(例如,Date被引用两次)。

这可能吗?

EDIT2 - 解决方案

这就是我所做的。我做了几个SQL查询,然后list.appended每个查询结果到一个大的列表。这像我想要的那样水平延伸。然后我能够使用writer()以我想要的方式获得完整的CSV文件。

2 个答案:

答案 0 :(得分:0)

您基本上想要将列添加到CSV文件中,因此请查看此处:How to add a new column to a CSV file using Python?

答案 1 :(得分:0)

EDIT2 - 解决方案

这就是我所做的。我做了几个SQL查询,然后list.appended每个查询结果到一个大的列表。这像我想要的那样水平延伸。然后我能够使用writer()以我想要的方式获得完整的CSV文件。