gpt4 book ai didi

python - 在 MySQL + Python 中使用 AND 运算符参数化子字符串查询的安全方法

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:07 25 4
gpt4 key购买 nike

我正在尝试从给定的字符串安全地构建 SQL 查询。该字符串可以包含空格。

string = "chair"

query = """SELECT *
FROM albums
WHERE title LIKE %s"""
values = ('%' + string + '%',)
cur.execute(query,values)
# >> SELECT * FROM albums WHERE title LIKE '%chair%'

但我不知道如何安全地扩展它以使用 AND 运算符搜索多个单词。

string = "big blue chair"
# >> SELECT * FROM albums WHERE title LIKE '%big%' AND
# title LIKE '%blue%' AND
# title LIKE '%chair%'

(我知道这就是 FULLTEXT 搜索的目的,等等......但这是针对非常小的数据集并且速度足够快。)

最佳答案

如果你想根据string动态扩展queryvalues,你可以这样做:

string = "big blue chair"
query = "SELECT * FROM albums WHERE title LIKE %s"
values = ["%{}%".format(val) for val in string.split()]
for _ in values[1:]: # iterate over len(values) - 1
query += " AND title LIKE %s"
print(query)
print(values)

输出:

SELECT * FROM albums WHERE title LIKE %s AND title LIKE %s AND title LIKE %s
['%big%', '%blue%', '%chair%']

关于python - 在 MySQL + Python 中使用 AND 运算符参数化子字符串查询的安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24700758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com