gpt4 book ai didi

python - cursor.execute(...) 用于字符串前缀搜索

转载 作者:行者123 更新时间:2023-11-29 00:11:04 24 4
gpt4 key购买 nike

假设我想在数据库中进行字符串前缀搜索,比如说

select * from some_table where name like 'abcde%';

abcde 实际上是一些用户输入的字符串。我如何在 Python 的 MySQLdb 中执行此操作?我可以想到两种方法:

cursor.execute("""select * from some_table where name like '%s%%'""", (some_prefix_to_search))

cursor.execute("""select * from some_table where name like %s""", (some_prefix_to_search + '%'))

哪一个是正确的方法?对于方法 1,MySQLdb 是否会正确地计算出 '%s%%' 是一个整体,因此它会生成 'abcde%' 而不是类似 ''abcde'%' 的东西,即将 %s 作为字符串值替换为 or没有引号?

对于方法2,输入字符串中的%是否会被认为是某种特殊值并进行转义?

谢谢。

最佳答案

第一种方法行不通; mysqldb 将再次引用您的输入值,查询将抛出语法错误。

您的第二种方法有效,因为 execute 方法只需要考虑 % 查询模板字符串中的特殊字符,以便它可以识别占位符并决定在何处插入参数。它没有理由将 % 视为参数值本身中的特殊字符,因为 % 不是可用于 SQL 注入(inject)的字符。

关于python - cursor.execute(...) 用于字符串前缀搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25025309/

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