0
我需要运行一个原始查询并且WHERE
子句是一个IN
。Django,Postgres DB,原始查询和有界IN参数
select
o.*,
from
ff_ooo as o
left join
ff_ooostatus s on o.id = s.ooo_id
left join
ff_rrrr r on s.rrrr_id=r.id
where
o.id in %s
group by
o.id
having
r.due_date = max(r.due_date)
我使用
return list(Ooo.objects.raw(
sql,
params=(ooo_ids,)
))
ooo_ids
是整数数组执行它。
产生的SQL失败,此错误:
ProgrammingError: syntax error at or near "ARRAY" LINE 13: o.id in ARRAY[7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
我看到Postgres的ORM代码使得IN
声明绑定参数为ARRAY[]
。但postgres DB不喜欢它。
如何在Django原始SQL查询中针对postgres数据库正确绑定整数数组到IN
子句?
PostgreSQL的这个答案应该有所帮助:http://stackoverflow.com/a/22008870/3246440 – 2014-11-14 15:57:51
[路过列表或元组作为可能的重复参数在Django的原始SQL](http://stackoverflow.com/questions/6895051/passing-lists-or-tuples-as-arguments-in-django-raw-sql) – 2014-11-14 16:10:50