[英]MySql Query in Python LIKE with Wildcard
我已经看到了这个问题,但通常给出的答案对我不起作用。 我正在尝试做一个简单的查询
query_pre_company = "SELECT `name` FROM `seta`.`companies` WHERE `companies`.`name` LIKE SOUNDEX(%s) OR(`companies`.`name` LIKE %s)"
name = sheet.cell(2,2).value #from an excel sheet
name_check='%'+name+'%'
rows_count=cursor.execute(query_pre_company,[name_check])
结果是错误
```query = query % tuple([db.literal(item) for item in args])
TypeError: not all arguments converted during string formatting```
我也试过
rows_count=cursor.execute(query_pre_company,(name_check,))
以及一百万种其他不同的变体,包括直接在查询中粘贴“%%s%”等
请帮忙谢谢
由于您有两个占位符,因此您需要传递两个参数。 SOUNDEX()
的参数应该是没有添加通配符的名称。
您也没有正确使用SOUNDEX()
。 它不返回lIKE
模式,它返回一个代码字符串。 您还需要在列上调用它并比较它们。
query_pre_company = """SELECT `name`
FROM `seta`.`companies`
WHERE SOUNDEX(`companies`.`name`) = SOUNDEX(%s)
OR `companies`.`name` LIKE %s"""
name = sheet.cell(2,2).value #from an excel sheet
name_check='%'+name+'%'
rows_count=cursor.execute(query_pre_company,[name, name_check])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.