Ответ 1
Канонический способ - использовать встроенный итератор курсора.
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()