You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo ORM多久提交变更到PostgreSQL?SQL查不到ORM创建记录问题

Odoo ORM数据库事务提交规则说明

核心结论:Odoo ORM没有固定的变更提交频率,事务提交和执行上下文的生命周期绑定

  • HTTP请求场景:所有同请求内的ORM操作会被包裹在同一个数据库事务中,仅当整个请求无异常、正常执行完毕后,才会一次性提交所有变更到PostgreSQL。请求未结束、或中途抛出异常触发回滚时,外部SQL查询无法检索到对应操作产生的数据。
  • 定时任务(cron)/CLI命令执行场景:逻辑和HTTP请求一致,整个任务的ORM操作归属于同一个事务,任务正常执行完成后统一提交,报错则全部回滚。

ORM创建记录后外部SQL查不到的常见原因

绝大多数该类问题都和事务未提交相关,典型触发场景如下:

  1. 调试过程中给请求代码加了断点,请求卡在执行过程中,事务还未提交,外部数据库工具自然查不到未写入的数据
  2. 在同一段代码逻辑里,ORM创建记录后立刻调用了绕开当前事务的原生SQL查询,未提交的变更对新的数据库连接不可见
  3. ORM操作之后的代码逻辑抛出了未捕获的异常,触发了事务自动回滚,记录根本没有实际写入数据库

特殊场景手动提交方案

如果确实需要在操作完成后立刻让变更对外部SQL可见,可以手动调用事务提交方法:
self.env.cr.commit()
注意:手动提交会破坏Odoo默认的事务原子性,一旦后续代码出现异常,已经提交的变更无法回滚,没有特殊需求不建议随意使用

内容的提问来源于stack exchange,提问作者Houssem Chouia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:36:11