python sqlite3 更新未生效

7 投票
2 回答
17659 浏览
提问于 2025-04-16 10:52

问题:为什么这个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)
)

撰写回答