Django中原始MySQL查询的语法错误
我在Django中使用原始的MySQL查询,并且想要设置一个动态的限制(这个限制值是从网址中获取的)。比如说:
cursor.execute("some select query limit %s " , [limit_value] )
这个限制值是从网址 www.asd.com/qwe/?limit=5
中获取的,我通过 limit_value=request.GET.get('limit')
来获取这个值。当我打印这个限制值时,它会显示为5,这意味着我可以从网址中获取到限制值。但是当我在上面的选择查询中使用这个限制值时,就会出现错误。
(1064, "你的SQL语法有错误;请检查与你的MySQL服务器版本相对应的手册,以获取正确的语法,错误出现在第1行的''5''附近")
但是如果我在文件中直接写 limit_value=5
,并在选择查询中使用它,就可以正常工作。
所以这意味着,如果我在网址中提到限制值并在文件中获取它,那么在选择查询中就无法使用。为什么会这样呢?或者我是不是漏掉了什么?
我的查询是:
SELECT DISTINCT
A.entity_id AS entity_id,
A.email AS email,
A.catquizid AS style_quiz_score,
A.catquizquesans AS style_quiz_answer,
A.created_at AS date_joined,
A.is_active AS is_active,
B.attribute_id AS attribute_id,
B.value AS info
FROM customer_entity AS A
inner join customer_entity_varchar AS B on A.entity_id=B.entity_id
WHERE B.attribute_id
limit %s
1 个回答
4
你的 limit_value
是一个字符串,而不是整数,所以在 SQL 参数中它会被加上引号。
试试这个:
cursor.execute("some select query limit %s", (int(limit_value),))