Django LIKE操作

n1bvdmb6  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(87)

我试图通过Django python发送查询,我也试图阻止任何SQL注入漏洞
有人能给我解释一下消息传递是如何完成的吗?例如,像查询

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

字符串
像这样配置Query很容易
x1n1x;
但是当插入%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,))

zzoitvuj

zzoitvuj1#

Kindy查看此页面:
What is the SQL ''LIKE" equivalent on Django ORM queries?
这就是Django-ORM的方式。
https://docs.djangoproject.com/en/4.2/topics/db/sql/
这是jango处理原始查询的方式

>>> 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是like-string。
mysql like string which contains %

相关问题