对PostgreSQL的更新、SET命令的更改似乎并不适用于persis

2024-10-08 18:23:24 发布

您现在位置:Python中文网/ 问答频道 /正文

如果满足条件,我将更新Postgres DB表的行

假设我有table "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命令的效果将消失。 一旦提交了周围的事务,除非被另一个集合覆盖,否则效果将一直持续到会话结束

我假设当它说“…稍后中止”时意味着关闭数据库连接

所以我的问题是,如何使更新持久化


Tags: 命令脚本sourcestatusupdatepostgresquery事务
2条回答

结果我只需要在执行命令后提交

connection.commit()

如果在提交事务之前终止数据库会话,它将被回滚。这就消除了UPDATE的影响

SET更改数据库会话持续时间的参数,因此不会产生任何持久性影响

相关问题 更多 >

    热门问题