MySql 在 Python LIKE 中使用通配符查询
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()
。它不是 return 一个 lIKE
模式,它 return 是一个代码字符串。你也需要在列上调用它并比较它们。
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])
我看到过这个问题,但通常给出的答案对我不起作用。 我正在尝试做一个简单的查询
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()
。它不是 return 一个 lIKE
模式,它 return 是一个代码字符串。你也需要在列上调用它并比较它们。
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])