python - 带通配符的 MySQLdb Like 运算符
python - MySQLdb Like operator with wildcard
我在 python.
中使用 MySQLdb 执行带有通配符的查询时遇到问题
我的代码
sql = "SELECT COUNT(id) FROM table WHERE name LIKE '%s%'"
with con:
cur.execute(sql, (name,))
复杂的是字符串 %s 之后的 %。根据文档,如果没有通配符 %,我可以只做 LIKE %s
,但我不知道如何从那里继续解决我的问题。
我在堆栈 Python MySQL parameterized query conflicts with % wildcard in LIKE statement 上发现了这个问题,它与我的问题类似,但没有采用动态参数。我尝试像上面的 link 那样转义通配符运算符,但我仍然遇到 SQL 语法错误。
有人知道吗?
谢谢
您应该将通配符放入参数中。
param = '{}%'.format(name)
sql = "SELECT COUNT(id) FROM table WHERE name LIKE %s"
with con:
cur.execute(sql, (param,))
请注意,您不应在 SQL 中使用引号作为占位符;这些是由 db-api.
添加的
我在 python.
中使用 MySQLdb 执行带有通配符的查询时遇到问题我的代码
sql = "SELECT COUNT(id) FROM table WHERE name LIKE '%s%'"
with con:
cur.execute(sql, (name,))
复杂的是字符串 %s 之后的 %。根据文档,如果没有通配符 %,我可以只做 LIKE %s
,但我不知道如何从那里继续解决我的问题。
我在堆栈 Python MySQL parameterized query conflicts with % wildcard in LIKE statement 上发现了这个问题,它与我的问题类似,但没有采用动态参数。我尝试像上面的 link 那样转义通配符运算符,但我仍然遇到 SQL 语法错误。
有人知道吗?
谢谢
您应该将通配符放入参数中。
param = '{}%'.format(name)
sql = "SELECT COUNT(id) FROM table WHERE name LIKE %s"
with con:
cur.execute(sql, (param,))
请注意,您不应在 SQL 中使用引号作为占位符;这些是由 db-api.
添加的