查看“事务和低级SQL”的源代码
←
事务和低级SQL
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看并复制此页面的源代码:
数据库编写操作是在数据库的上下文中执行的事务。通常情况下,我们不用担心服务器在运行模型方法时的问题。 但在某些情况下,我们可能需要更好地控制事务。这可以通过数据库游标self.env.cr完成,如下所示︰ self.env.cr.commit()提交事务的缓冲写入操作 self.env.savepoint()设置一个事务回滚到保存点 self.env.rollback()取消事务最后一个保存点的写操作,因或者假设没有创建保存点 小提示 在shell会话中,除非使用self.env.cr.commit()否则你的数据操作不会使用。 使用游标execute()方法,我们可以直接在数据库中运行SQL。它使用带有SQL语句的字符串和第二个可选参数作为SQL的参数的一个元组或值列表。这些值将使用了%s占位符。 注意 小心 ! 对于cr.execute(),我们应该拒绝直接将参数值添加到查询字符串。可以通过SQL加以利用注入攻击,这是众所周知的安全风险。通常使用%s占位符和第二个参数值。 如果您使用的是SELECT查询,那么应该获取记录。fetchall()函数检索所有的行,作为一个tupples的列表和dictfetchall()将它们作为一个字典列表检索,如下面的示例所示︰ <nowiki>对于cr.execute(),我们应该拒绝直接将参数值添加到查询字符串。可以通过SQL加以利用注入攻击,这是众所周知的安全风险。通常使用%s占位符和第二个参数值。 如果您使用的是SELECT查询,那么应该获取记录。fetchall()函数检索所有的行,作为一个tupples的列表和dictfetchall()将它们作为一个字典列表检索,如下面的示例所示︰ </nowiki> 还可以运行数据操作语言(DML)指令像UPDATE和INSERT。由于服务器保存数据缓存,它们可能会与数据库中的实际数据不一致。正因为如此,在使用时原始的DML,应该在以后使用这些缓存self.env.invalidate_all()。 注意 小心 ! 直接在数据库中执行SQL可能导致不一致的数据。只有你确信你要做什么事才使用它。
返回至
事务和低级SQL
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
odoo 中文开发手册
odoo 开发参考
odoo 实施笔记
Odoo 最佳方案
关于 OdooV
Odoo FAQ
工具
链入页面
相关更改
特殊页面
页面信息
友情链接
odoo官网
odoo中文网
odoo实施