执行SQL查询

时间:2015-07-22 20:18:14

标签: sql odoo

所以我将我的模块从7迁移到8,我的查询有问题。

我有这样的查询:

SELECT sum(product_qty) FROM stock_move WHERE state NOT IN ('cancelled', 'done') AND product_id = %s AND purchase_line_id IS NOT NULL;

然后执行该查询:

self._cr.execute(sql, (product,))

要获取我拥有的数据:

amount = self._cr.fetchone()

它不会获取任何数据,为什么会这样?当我在控制台中运行查询时,它按预期工作。

1 个答案:

答案 0 :(得分:2)

所以v7和v8 Api的行为完全不同,在v7中你使用cr作为方法params所以你可以直接说cr.execute并且它可以工作,但是在v8 cr中是执行{的一部分存储ORM和cr使用的各种上下文数据的{1}}变量是其中的一部分。现在,作为' cr'是[environment][1]environment的一部分,名为environment的变量是自我的一部分,您必须从env提取cr,因此语法将为:

env

这将执行sql注入。

但要小心v7和v8语法混合和匹配v8框架的行为。如果您仍然使用旧的API方法与cr,uid,id和上下文参数,那么你的cr就是直接的,然后是自我的一部分。

由于