0

我有一个循环处理 MySQLdb 查询的输出:

for item in getItems()
    . . . 

其中 getResults() 返回 cursor.fetchall() 的输出。

如何修改 getItems() 以便它结合几个不同查询的 fetchall() 返回?也就是说,一旦第一个查询的结果用完,我希望循环开始处理第二个查询的结果。

4

2 回答 2

1

我不知道您如何进行查询的详细信息,但是这样的事情应该可以工作:

[item for query in queries for item in execute(query)]

execute假设返回哪里cursor.fetchall()

于 2012-07-20T03:01:44.557 回答
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:
    ...
于 2012-07-20T05:10:44.083 回答