python sqlite3 更新未生效
问题:为什么这个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))
这个可以正常返回记录。但是记录没有更新为新的值,仍然是u''。我搞不清楚为什么。我的where语句似乎没问题,语法也看起来正确,因为没有报错。我对为什么不工作感到困惑。
2 个回答
39
如果你修正了语法问题后,问题还是存在,请确保你正在使用:
conn.commit()
在执行 cur.execute 之后,更新(UPDATES)和插入(INSERTS)操作需要进行提交(COMMIT)。
9
不要用'AND',用','。
cur.execute('UPDATE workunits SET Completed=1, Returns=? WHERE PID=? AND Args=?',
(pickle.dumps(Ret), PID, Args)
)