2011-01-30 98 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。