我有两个查询,想要将它们保存在一个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()
只要两个查询的结果与行标题匹配,那就完美了。
编辑1:好的,那这样怎么样?我如何将两个元组合并成一个,而不是扩展元组的长度,而是并列连接它们?如果我只是添加tuple1 + tuple2,那么它会扩展列表的长度,但我希望它们并排显示。例如:
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
那么我可以使用 writerows() 函数并删除多余的列(例如,日期被引用两次)来修改 CSV 文件。
这种方法可行吗?
编辑2 - 解决方案
这是我的解决方案。我进行了几个 SQL 查询,然后将每个查询结果 append 到一个大列表中。这样列表会水平扩展,就像我想要的那样。然后,我可以使用 writerows() 函数,得到一个按照我想要的方式完整的 CSV 文件。