2011-01-30 99 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)) 

哪個返回記錄就好了。但該記錄並沒有跟上醃漬ret的新價值。它仍然是你'。我無法弄清楚爲什麼。我的where語句似乎工作。我的語法似乎是正確的,因爲沒有錯誤被拋出。我無能爲力,爲什麼它不工作。

回答

8

請勿使用'AND',請使用','。

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

謝謝你結束我的折磨。 – Narcolapser 2011-01-30 02:47:41

12

如果修復語法後問題仍然存在。請確保您使用的是:

conn.commit() 

cur.execute後,UPDATES和INSERTS需要COMMIT。