0

私はdjangoで未加工のmysqlクエリを制限付きで使用しています(制限は動的で、Urlに記載されています)。

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 構文にエラーがあります。1 行目の ''5'' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください」)

しかし、上で示したように、ファイルの制限値について言及し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
4

1 に答える 1

4

Yourlimit_valueは整数ではなく文字列であるため、SQLパラメータとして引用符が付けられます。

これを試して:

cursor.execute("some select query limit %s", (int(limit_value),))
于 2013-02-14T10:14:19.170 に答える