【发布时间】:2014-02-20 20:29:30
【问题描述】:
我有两个查询要一起保存在一个 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 它会扩展列表的长度,但我希望它们并排。例如:
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(例如 Date 被引用两次)。
这可能吗?
EDIT2 - 解决方案
这就是我所做的。我做了几个 SQL 查询,然后将每个查询结果 list.append 到一个大列表中。这就像我想要的那样水平延伸。然后我可以 writerows() 以我想要的方式获取完整的 CSV 文件。
【问题讨论】:
-
你想如何添加它们。作为行或列。
-
每个查询将有大约 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 然后将在下面有相应的行。