Par*_*ark 5 python mysql pymysql
我想在“事件”列中找到“概率:10%”或“10% 高”之类的内容,但是当我使用以下代码时:
conn = pymysql.connect(host="localhost", port=3306, user='myid', passwd='mypwd', db='mydb', charset='utf8')
curs = conn.cursor()
key = "%"
curs.execute(
"SELECT count(*) AS number FROM city WHERE events LIKE %s",
("%" + key + "%",)
)
Run Code Online (Sandbox Code Playgroud)
它返回表中的每一行。它执行了这个查询:
SELECT count(*) AS number FROM city WHERE events LIKE '%%%'
Run Code Online (Sandbox Code Playgroud)
像这样,我不是故意的。
搜索反斜杠符号也给了我错误的结果。
我应该怎么做才能得到正确的结果?
提前致谢。
您可以在 SQL 中使用 concat 并传递值,而不是在 param 中连接通配符
curs.execute(
"SELECT count(*) AS number FROM city WHERE events LIKE CONCAT('%', %s, '%')",
(key ,)
)
Run Code Online (Sandbox Code Playgroud)
或如@Notinlist 所建议的
curs.execute( "SELECT count(*) AS number FROM city WHERE events LIKE CONCAT('%%', %s, '%%')", (key ,) )
| 归档时间: |
|
| 查看次数: |
1515 次 |
| 最近记录: |