4
import sqlite3    
conn = sqlite3.connect('sample.db')    
cursor = conn.cursor()    
data = cursor.execute('''SELECT * From Table''')

for i in data:    
    title = i[0]        
    status = i[1]    
    cursor.execute('''UPDATED Table SET status=? WHERE title=?''', (status, title))

cursor.close()    
conn.commit()

我正在尝试通过多次迭代进行更新。但是,一旦数据库进行第一次更新,脚本就会跳出循环。如何解决这个问题?谢谢!

4

1 回答 1

12

data = data.fetchall()在循环之前使用。否则,当您尝试遍历该结果集时,您最终会在循环内回收游标(重置其结果集)。

Using.fetchall()返回一个结果列表,以便您在重新使用游标之前将它们存储在本地。

或者,如果您不想在本地缓存第一个查询的结果,请创建一个单独的游标用于更新语句。

于 2012-05-01T22:02:12.423 回答