0

MySQLdbクエリの出力を処理するループがあります。

for item in getItems()
    . . . 

ここで、getResults()はcursor.fetchall()の出力を返します。

getItems()を変更して、いくつかの異なるクエリのfetchall()リターンを組み合わせるにはどうすればよいですか?つまり、最初のクエリの結果が使い果たされたら、ループが2番目のクエリの結果の処理を開始するようにします。

4

2 に答える 2

1

両方のクエリの列構造が類似している場合は、MySQLを使用して、UNIONキーワードを使用して2つの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 に答える
1

クエリの実行方法の詳細についてはわかりませんが、次のように機能するはずです。

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

ここで、executeはを返すと想定されcursor.fetchall()ます。

于 2012-07-20T03:01:44.557 に答える