2015-10-07 42 views
-1

我試圖做一個選擇Django的查詢語法(必須是字符串或只讀緩衝器,而不是數組)

query = "select * from snmptt order by id desc limit %s", limit 
cursorMYSQL.execute(query) 

我從形式

limit = form_limit.cleaned_data['limit'] 

我已經使用得到限制這個語法(而不是%)爲插入和它的工作,所以我不明白爲什麼現在不工作。

謝謝!

+5

但首先讓我問你一個問題,當你使用Django時,爲什麼要創建一個遊標並手動執行這樣一個簡單的查詢? – e4c5

+2

如果將其更改爲'「select * from snmptt order by id desc limit%s」%limit',會發生什麼? – cezar

+1

@cezar使用'「...」%limit'是個不錯的主意。它可能工作,但它不安全,並使您容易受到SQL注入的影響。 – Alasdair

回答

4

查詢和參數應該是執行方法的獨立參數。

query = "select * from snmptt order by id desc limit %s" 
params = [limit] 
cursorMYSQL.execute(query, params) 
+0

@cezar如果你願意,你可以在一行中完成整個事情,但我認爲更長的版本更清晰,特別是作爲堆棧溢出的答案。 – Alasdair

+0

我不小心刪除了我以前的評論,而不是僅僅編輯它。是的,更長的版本更加詳細和更全面。只是一句話,對於'params'是一個元組,它不會更好嗎?在文檔中,我看到了準備好的語句中的元組。 – cezar

+0

我不認爲它實際上是否使用列表或元組有任何區別。在這種情況下,只有一個參數,我使用'[limit]',因爲它更清楚'(limit,)'。 – Alasdair

相關問題