我有一个循环处理 MySQLdb 查询的输出:
for item in getItems()
. . .
其中 getResults() 返回 cursor.fetchall() 的输出。
如何修改 getItems() 以便它结合几个不同查询的 fetchall() 返回?也就是说,一旦第一个查询的结果用完,我希望循环开始处理第二个查询的结果。
我有一个循环处理 MySQLdb 查询的输出:
for item in getItems()
. . .
其中 getResults() 返回 cursor.fetchall() 的输出。
如何修改 getItems() 以便它结合几个不同查询的 fetchall() 返回?也就是说,一旦第一个查询的结果用完,我希望循环开始处理第二个查询的结果。
我不知道您如何进行查询的详细信息,但是这样的事情应该可以工作:
[item for query in queries for item in execute(query)]
execute
假设返回哪里cursor.fetchall()
。
如果两个查询具有相似的列结构,您可以考虑使用 MySQL 使用 UNION 关键字组合两个 SQL 查询。
SELECT a, b, c
FROM table_x
UNION
SELECT d,e,f
FROM table_y
否则,将 getItems 定义为生成器可能会更容易。
def getItems():
cursor.execute(query1)
for row in cursor.fetchall():
yield row
cursor.execute(query2)
for row in cursor.fetchall():
yield row
gen = getItems()
for item in gen:
...