Каноничният начин е да използвате вградения итератор на курсора.
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()