標準的な方法は、組み込みのカーソルイテレータを使用することです。
curs.execute('select * from people')
for row in curs:
print row
fetchall()
を使用できます すべての行を一度に取得します。
for row in curs.fetchall():
print row
これを使用して、返された値を含むPythonリストを作成すると便利な場合があります。
curs.execute('select first_name from people')
names = [row[0] for row in curs.fetchall()]
これは小さな結果セットには役立ちますが、結果セットが大きい場合は悪い副作用が発生する可能性があります。
-
結果セット全体がクライアントプロセスに返されるのを待つ必要があります。
-
構築されたリストを保持するために、クライアントのメモリを大量に消費する可能性があります。
-
Pythonがリストを作成および分解するのに時間がかかる場合がありますが、とにかくすぐに破棄します。
結果セットに返される行が1つあることがわかっている場合は、fetchone()
を呼び出すことができます。 単一の行を取得します。
curs.execute('select max(x) from t')
maxValue = curs.fetchone()[0]
最後に、一度に1行をフェッチする結果セットをループできます。一般に、イテレータを使用するよりもこれを行うことに特別な利点はありません。
row = curs.fetchone()
while row:
print row
row = curs.fetchone()