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