当查询语句中带有模糊查询,且带有 %s 用来连接字符串时,会出现 ValueError:unsupported format character '?' 的错误
例如:
item = 1
sql = "SELECT id,statement FROM table where statement like '%标题%' limit %s"
cursor.execute(sql, item)
# 但如果 sql = "SELECT id,statement FROM table where statement like '%标题%'" ,不会出现错误。
原因:执行cursor.execute(query)时,如果有其他参数,那么sql语句和参数之间用 % 连接,但模糊查询中的 % 会被误认为是用来连接字符串的 % , 所以例子中 ‘%标’ 会出现不识别的情况,即unsupported format character。
解决方法:如果 %s 前后有 % 的时候,想要将其当做普通的 % ,则使用 %%。
# 改动
item = 1
sql = "SELECT id,statement FROM table where statement like '%%标题%%' limit %s"
cursor.execute(sql, item)