问题:为什么这个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声明似乎有效。我的语法似乎是正确的,因为没有抛出错误。我不知道为什么它不起作用。
答案 0 :(得分:19)
如果修复语法后问题仍然存在。请确保您正在使用:
conn.commit()
在cur.execute之后,UPDATES和INSERTS需要COMMIT。
答案 1 :(得分:8)
不要使用'AND',请使用','。
cur.execute('UPDATE workunits SET Completed=1, Returns=? WHERE PID=? AND Args=?',
(pickle.dumps(Ret), PID, Args)
)