Django 的 LIKE 操作。
P粉425119739
2023-08-02 15:55:17
<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>
请检查这个页面。
What is the SQL ''LIKE" equivalent on Django ORM queries?
那是 Django 的 ORM 方式。
https://docs.djangoproject.com/en/4.2/topics/db/sql/
这是 Django 处理原始查询的方式。
您展示的不是 Django 代码,而是纯粹的 Python-MySQL 代码。
对于 Python-MySQL,您可以按照您所做的方式处理,并且它会处理引号和注入问题。
但是您应该这样做。
title_like 是一个模糊匹配的字符串。
mysql like string which contains %