如果满足条件,我将更新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命令的效果将消失。 一旦提交了周围的事务,除非被另一个集合覆盖,否则效果将一直持续到会话结束
我假设当它说“…稍后中止”时意味着关闭数据库连接
所以我的问题是,如何使更新持久化
结果我只需要在执行命令后提交
如果在提交事务之前终止数据库会话,它将被回滚。这就消除了
UPDATE
的影响SET
更改数据库会话持续时间的参数,因此不会产生任何持久性影响相关问题 更多 >
编程相关推荐