Ошибка ProgrammingError возникает, если предыдущий вызов execute * () не дал никакого набора результатов, или еще не было выполнено никакого вызова.
я только что была дискуссия с некоторыми коллегами по поводу db-api fetchone Python против fetchmany против fetchall.
Я уверен, что вариант использования для каждого из них зависит от реализации db-api, которую я использую, но в целом, каковы варианты использования fetchone против fetchmany против fetchall?
Другими словами, являются ли следующие эквиваленты? или есть один из них, который предпочтительнее других? и если да, то в каких ситуациях?
cursor.execute("SELECT id, name FROM `table`")
for i in xrange(cursor.rowcount):
id, name = cursor.fetchone()
print id, name
cursor.execute("SELECT id, name FROM `table`")
result = cursor.fetchmany()
while result:
for id, name in result:
print id, name
result = cursor.fetchmany()
cursor.execute("SELECT id, name FROM `table`")
for id, name in cursor.fetchall():
print id, name