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()ループの前に使用します。そうしないと、その結果セットをループしようとしているときに、ループ内でカーソルをリサイクルする (結果セットをリセットする) ことになります。

を使用.fetchall()すると、結果のリストが返されるので、カーソルを再利用する前に結果をローカルに保存できます。

または、最初のクエリの結果をローカルにキャッシュしたくない場合は、更新ステートメントに使用する別のカーソルを作成します。

于 2012-05-01T22:02:12.423 に答える