Django RAW SQL,命名参数

时间:2017-04-10 20:38:22

标签: django django-orm

我有一个复杂的查询,有一些内部联接,一个小where子句和HAVING子句,这是一个报告。

在这种情况下,我无法使用Model.objects.raw,因此我使用cursor.execute(sql)。我的问题是我的参数。我有20个参数,其中一些参数重复(每个内部联接中都有company_id)。

在使用cursor.execute时,使用dict和%(key)不能在这里工作,它只适用于Model.object.raw。

如何命名参数,只传递一次?或者有一种方法可以清理我的整个查询,避免SQL注入吗?

传递所有20个参数并按顺序重复它们在列表中是不可读的。

1 个答案:

答案 0 :(得分:0)

根据Django文档,这是正确的方法,但是警告它不适用于Sqlite

cursor.execute('SELECT * from Bla where id = %(some_id)s', {"some_id":1})
相关问题