所以我将我的模块从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()
它不会获取任何数据,为什么会这样?当我在控制台中运行查询时,它按预期工作。
答案 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就是直接的,然后是自我的一部分。
由于