我有一个循环处理一个MySQLdb的查询的输出:如何将多个MySQLdb fetch_all()调用的输出合并到一个列表中?
for item in getItems()
. . .
其中getResults()返回一个cursor.fetchall的输出()。
如何修改getItems(),所以它结合了使用fetchall几个不同的查询()返回?也就是说,一旦第一个查询的结果用尽,我希望循环开始处理第二个查询的结果。
我有一个循环处理一个MySQLdb的查询的输出:如何将多个MySQLdb fetch_all()调用的输出合并到一个列表中?
for item in getItems()
. . .
其中getResults()返回一个cursor.fetchall的输出()。
如何修改getItems(),所以它结合了使用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:
...
我不知道你怎么办查询详情,但这样的事情应该工作:
[item for query in queries for item in execute(query)]
其中假定execute
返回cursor.fetchall()
。
这并不工作。谢谢。 – chernevik 2012-07-20 14:44:36
后者就是我一直在寻找的东西 - 某种方式让Python抓住并合并结果。谢谢。 – chernevik 2012-07-20 14:44:10