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.

添加的