Django 的 LIKE 操作。
P粉425119739
P粉425119739 2023-08-02 15:55:17
[MySQL讨论组]

我正在尝试通过 Django 的 Python 发送一个查询,我还试图阻止任何 SQL 注入攻击。

有人可以解释一下如何进行消息传递吗?例如,LIKE 查询的示例。


"SELECT * FROM admin WHERE name LIKE '%myTitle%'

很容易配置像这样的查询。

cursor.execute("SELECT * FROM admin WHERE name= %s", (_id, ));

但是在插入 %s 时,取消文本中的 %% 很容易出错,例如。

SELECT * FROM admin WHERE name LIKE %s

当查询完成时,它会像这样。

SELECT * FROM admin WHERE name 'MyTitle'

它正在正确地实现,但我希望在 %s 和 LIKE 之间设置 %%。

SELECT * FROM admin WHERE name '%MyTitle%'

有人可以解释一下如何解决这个问题吗?

我的简单脚本如下:


from django.db import connection
title = "myTitle"
query = "SELECT * FROM admin WHERE name LIKE %s"
with connection.cursor() as cursor:
     cursor.execute(query, (title,))


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 %

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号