2012-05-01 166 views
1
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() 

我想更新多次迭代。但是,只要数据库进行第一次更新,脚本就会跳出循环。如何解决这个问题?谢谢!蟒蛇sqlite3循环更新

+0

“但是,只要数据库进行第一次更新,脚本就会跳出循环。”你确定你的代码甚至做了一次更新吗?语法错误。 –

+0

这种操作不是惯用的sql。很可能您可以将其重写为单个语句,而不是for-loop,以获得更好的性能。你能告诉我们更多关于你正在做的查询吗,我们可以给你一个更好的答案。 – SingleNegationElimination

回答

6

在循环之前使用data = data.fetchall()。否则,当你试图循环结果集时,你会在循环内循环使用游标(重置它的结果集)。

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

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