Django 的 LIKE 操作。
P粉425119739
P粉425119739 2023-08-02 15:55:17
0
1
477
<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粉425119739
P粉425119739

全部回覆(1)
P粉293550575

請檢查這個頁面。

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 %

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!