首頁  >  問答  >  主體

Django 的 LIKE 操作。

<p>我正在嘗試透過 Django 的 Python 發送查詢,我還試圖阻止任何 SQL 注入攻擊。 <br /><br />有人可以解釋如何進行訊息傳遞嗎?例如,LIKE 查詢的範例。 </p><p><br /></p> <pre class="brush:php;toolbar:false;">"SELECT * FROM admin WHERE name LIKE '%myTitle%'</pre> <p>很容易配置像這樣的查詢。 </p> <p><code>cursor.execute("SELECT * FROM admin WHERE name= %s", (_id, ))</code>;</p> <p>但插入 %s 時,取消文字中的 %% 很容易出錯,例如。 </p> <pre class="brush:php;toolbar:false;">SELECT * FROM admin WHERE name LIKE %s</pre> <p>當查詢完成時,它會像這樣。 </p> <pre class="brush:php;toolbar:false;">SELECT * FROM admin WHERE name 'MyTitle'</pre> <p>它正在正確地實現,但我希望在 %s 和 LIKE 之間設置 %%。 </p> <pre class="brush:php;toolbar:false;">SELECT * FROM admin WHERE name '%MyTitle%'</pre> <p>有人可以解釋如何解決這個問題嗎? <br /><br />我的簡單腳本如下:</p><p><br /></p> <pre class="brush:php;toolbar:false;">from django.db import connection title = "myTitle" query = "SELECT * FROM admin WHERE name LIKE %s" with connection.cursor() as cursor: cursor.execute(query, (title,))</pre> <p><br /></p>
P粉425119739P粉425119739444 天前453

全部回覆(1)我來回復

  • P粉293550575

    P粉2935505752023-08-03 13:21:22

    請檢查這個頁面。

    What is the SQL ''LIKE" equivalent on Django ORM queries?

    那是 Django 的 ORM 方式。

    https://docs.djangoproject.com/en/4.2/topics/db/sql/

    #

    這是 Django 處理原始查詢的方式。

    >>> query = "SELECT * FROM myapp_person WHERE last_name = %s" % lname
    >>> Person.objects.raw(query)

    您展示的不是 Django 程式碼,而是純粹的 Python-MySQL 程式碼。

    對於 Python-MySQL,您可以按照您所做的方式處理,並且它會處理引號和注入問題。

    但是您應該這樣做。


    title_like = f"%{title}%"
    cursor.execute(query, (title_like,))

    title_like 是一個模糊匹配的字串。

    mysql like string which contains %

    回覆
    0
  • 取消回覆