2011-01-30 23 views
4

質問:このsqlite3文がレコードを更新しないのはなぜですか?python sqlite3の更新が更新されない


情報:

cur.execute('UPDATE workunits SET Completed=1 AND Returns=(?) WHERE PID=(?) AND Args=(?)',(pickle.dumps(Ret),PID,Args)) 

私はPythonとsqlite3のを使用しています。このステートメントはエラーをスローしません、それはちょうどそれが右無視されたように思えます。テストの理由から、私はそれに含まれています:

cur.execute('SELECT * FROM workunits WHERE PID=(?) AND Args=(?)',(PID,Args)) 

これは、レコードを正常に返します。記録はpickled retの新しい値で更新されません。それは変わらない。なぜ私は理解できません。私のwhereステートメントはうまくいくようです。私の構文は間違いがないので正しいと思われます。私は正確にそれが動作しない理由については無知です。

答えて

8

'AND'は使用しないでください。 '、'を使用してください。

cur.execute('UPDATE workunits SET Completed=1, Returns=? WHERE PID=? AND Args=?', 
    (pickle.dumps(Ret), PID, Args) 
) 
+1

私の苦しみを終わらせてくれてありがとう。 – Narcolapser

+0

ようこそ。ボーナスポイントについては、あなたの声明が何をしているのか、それがなぜエラーではないのかを理解してください。 – Harmen

12

構文を修正しても問題が解決しない場合。あなたが使用していることを確認してください:

conn.commit() 

cur.execute、更新や挿入がCOMMIT要求した後。

関連する問題