2012-05-01 11 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() 

私は複数の反復で更新しようとしています。ただし、データベースが最初に更新されるとすぐに、スクリプトはループから抜け出します。これを修正するには?ありがとう!python sqlite3 forループ更新

+0

"ただし、データベースが最初の更新を行うとすぐにループからスクリプトが切り離されます。あなたのコードでも1つの更新情報が得られますか?構文が間違っています。 –

+0

この種の操作は慣用的なSQLではありません。これは、これを1つのステートメントに書き直すことができます。あなたがやっている質問についてもう少し詳しく教えてください。私たちはあなたにもっと良い答えを与えることができます。 – SingleNegationElimination

答えて

6

ループの前にdata = data.fetchall()を使用してください。さもなければ、その結果セットをループさせようとしている間に、ループの中でカーソルをリサイクルする(結果セットをリセットする)。

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

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

関連する問題