我有两个查询要保存在一个CSV文件中。我可以单独做到这一点,但我无法弄清楚如何将两个文件复制到一个文件中(不合并,只需将列从一个文件复制到另一个文件),或许我可以在源代码中使用SQL查询来完成此操作。将MySQL查询结果保存为CSV文件
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()
只要两个查询结果的行头相匹配,这将是完美的。
编辑1:好吧,这个怎么样。我如何将两个元组元组连接在一起,这样我就不会延长元组的长度,而是将它们并行连接起来?如果我只是添加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我得到:
3210我真正想要的是:
x,x,x,x,y,y,y,y
x,x,x,x,y,y,y,y
x,x,x,x,y,y,y,y
那么我可以writerows(),并通过删除修改CSV额外的列(例如Date被引用两次)。
这可能吗?
EDIT2 - SOLUTION
这是我做的。我做了几个SQL查询,然后列出。将每个查询结果附加到一个大列表中。这就像我想要的那样水平延伸。然后我可以编写()以我想要的方式获取完整的CSV文件。
你想如何添加它们。作为行或列。 – scriptmonster
每个查询将有〜2000行,每列约9列。理想情况下,我想将它们并行添加,以便所有列都将在顶部表示,然后实际结果将从头下的第一行开始,然后向下延伸。 EG:如果first_set返回包含数据的列,则a,b,c,d,e和second_set返回f,g,h,i,j,那么文件将如下所示:a,b,d,e,f,g, h,i,j,然后在下面有相应的行。 –