2013-02-14 52 views
0

我在django中使用原始mysql查询的限制(该限制是动态的,将在Url中提及),例如。在Django的原始MySQL查询中的语法错误

cursor.execute("some select query limit %s " , [limit_value]) 

这个限值是来自URL www.asd.com/qwe/?limit=5,我抓住这个值作为limit_value=request.GET.get('limit')当我打印此限制值,将打印5意味着我可以从URL中的限值,但是当我在选择提到它查询,如上所示。它会抛出错误

(1064,“您的SQL语法错误;检查对应于你的MySQL服务器版本,在1号线附近使用‘’5‘’正确的语法手册” )

但是,如果我在文件中提到限制值为limit_value=5,并在选择查询中使用它,如上所示,它将起作用。

所以这意味着限制在选择查询将无法正常工作,如果我在URL中提到它并将其捕获到文件中。为什么?或者有什么我失踪?

我的查询:

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 
+0

查询的形成似乎是错的,什么查询你想要执行 – avasal 2013-02-14 10:07:45

+0

好,我编辑我的问题,但如果当我不能在URL中的文件提到了限制,同样的查询将工作 – Inforian 2013-02-14 10:09:24

+0

我编辑了我的问题请查看 – Inforian 2013-02-14 10:10:52

回答

4

limit_value是一个字符串,而不是一个整数,作为SQL参数,因此给出的报价。

试试这个:

cursor.execute("some select query limit %s", (int(limit_value),)) 
+0

是的,这是问题,现在它工作正常,谢谢@Martijin – Inforian 2013-02-14 10:19:52