Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django原始SQL,命名参数_Django_Django Orm - Fatal编程技术网

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
格式系统,但仍然不起作用。