我有一个处理MySQLdb查询输出的循环:
for item in getItems()
. . .
其中getResults()返回cursor.fetchall()的输出。
如何修改getItems(),以便它结合几个不同查询的fetchall()返回?也就是说,一旦第一个查询的结果用尽,我希望循环开始处理第二个查询的结果。
答案 0 :(得分:1)
我不知道你如何进行查询的细节,但这样的事情应该有效:
[item for query in queries for item in execute(query)]
假设execute
返回cursor.fetchall()
。
答案 1 :(得分:1)
如果两个查询都有类似的列结构,您可以考虑使用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:
...