Каноническим способом является использование встроенного итератора курсора.
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 для создания и деконструкции
список, который вы собираетесь немедленно отменить в любом случае.
Если вы знаете, что в наборе результатов возвращается одна строка, вы можете вызвать fetchone()
, чтобы получить одну строку.
curs.execute('select max(x) from t')
maxValue = curs.fetchone()[0]
Наконец, вы можете зацикливаться на наборе результатов, выбирая по одной строке за раз. В общем, в этом нет особого преимущества перед использованием итератора.
row = curs.fetchone()
while row:
print row
row = curs.fetchone()