2012-05-01 207 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()返回結果列表,以便在重新使用遊標之前將它們存儲在本地。

或者,如果您不想在本地緩存第一個查詢的結果,請創建一個單獨的遊標以用於更新語句。