如果满足条件,我将更新 Postgres 数据库表的行。
假设我有一个表“fruit”
,它的两列是“source”
和“status”
。
我想将 "status"
从 "SOLD"
更新为 "EMPTY"
,前提是 "source"
来自 "FarmA"
。
为方便起见,我们假设表格中只有一行,并且目前状态标记为 "SOLD"
。
我用python写的命令是:
postgres_update_query = "UPDATE fruit SET status = %s WHERE source = %s"
cursor.execute(postgres_update_query, ['EMPTY', 'FarmA']
除了对表所做的更改不是持久性的之外,代码可以正常工作。
当我在关闭连接之前检查是否已进行更改时,我可以看到更改已应用。
但是,如果我重新运行脚本,它会显示更改尚未应用,因此它会再次完全重新运行脚本。
从 PostgreSQL 文档中可以看出 SET
函数:
如果在后来中止的事务中发出 SET(或等效的 SET SESSION),则 SET 命令的效果在事务回滚时消失。 一旦周围事务被提交,效果将持续到 session 结束,除非被另一个 SET 覆盖。
我假设当它说“...稍后中止”时,它意味着关闭数据库连接。
所以我的问题是,如何使更新持久化?
最佳答案
原来我只需要在执行命令后提交
connection.commit()
关于python - 使用 UPDATE、SET 命令对 PostgreSQL 所做的更改似乎不会持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57564543/