Django原始SQL,命名参数
我有一个复杂的查询,有一些内部连接,一个小的Django原始SQL,命名参数,django,django-orm,Django,Django Orm,我有一个复杂的查询,有一些内部连接,一个小的where子句和HAVING子句,这是一个报表 在这种情况下,我不能使用Model.objects.raw,所以我使用的是cursor.execute(sql)。我的问题是我的参数。我有20个参数,其中一些参数是重复的(每个内部连接中都有公司id) 当使用cursor.execute时,使用dict和%(键)在此处不起作用,它只适用于Model.object.raw 如何命名参数,以便只传递一次?或者有没有一种方法来清理我的整个查询,避免SQL注入 传
where
子句和HAVING
子句,这是一个报表
在这种情况下,我不能使用Model.objects.raw,所以我使用的是cursor.execute(sql)
。我的问题是我的参数。我有20个参数,其中一些参数是重复的(每个内部连接中都有公司id)
当使用cursor.execute时,使用dict和%(键)在此处不起作用,它只适用于Model.object.raw
如何命名参数,以便只传递一次?或者有没有一种方法来清理我的整个查询,避免SQL注入
传递所有20个参数并按列表顺序重复它们是不可读的。根据Django文档,这是正确的方法,但警告它在Sqlite上不起作用
cursor.execute('SELECT * from Bla where id = %(some_id)s', {"some_id":1})
哪一个数据库?@serg正在使用mysqlserver它是如何工作的?您正在调用cursor.execute(sql,dict_和_named_params)?粗略地尝试,但也无法使其工作。它似乎只是在param的第一个字符中sub。尝试使用
:name
格式系统,但仍然不起作用。