我有一个复杂的查询,有一些内部联接,一个小where
子句和HAVING
子句,这是一个报告。
在这种情况下,我无法使用Model.objects.raw,因此我使用cursor.execute(sql)
。我的问题是我的参数。我有20个参数,其中一些参数重复(每个内部联接中都有company_id)。
在使用cursor.execute时,使用dict和%(key)不能在这里工作,它只适用于Model.object.raw。
如何命名参数,只传递一次?或者有一种方法可以清理我的整个查询,避免SQL注入吗?
传递所有20个参数并按顺序重复它们在列表中是不可读的。
答案 0 :(得分:0)
根据Django文档,这是正确的方法,但是警告它不适用于Sqlite
cursor.execute('SELECT * from Bla where id = %(some_id)s', {"some_id":1})