格式化sql%like%

时间:2014-01-27 00:42:03

标签: python mysql

我正在尝试执行以下查询:

select count(*) from video where territories like %ZW%

这是我目前所拥有的,但它引发了一个错误:

for territory_code in ALL_TERRITORIES:
    sql = "select count(*) from video where territories like %{}%".format(territory_code)
    cursor.execute(sql)

我在这里做错了什么,以及如何正确地缩放%%?

4 个答案:

答案 0 :(得分:2)

更好的方法如下:

sql = "select count(*) from video where territories like %s"
cursor.execute(sql, ('%' + territory + '%',))

通过这种方法,您可以参数化查询而无需担心转义,更重要的是,无需担心security vulnerabilities

答案 1 :(得分:1)

他们这样做,你需要一个带单引号的文字字符串。

 select count(*) from video where territories like '%ZW%'

答案 2 :(得分:0)

也许你可以在之后使用简单的引号:

"select count(*) from video where territories like '%{}%'"

答案 3 :(得分:0)

你错过了'' %%周围的单引号。请改用:

"select count(*) from video where territories like '%{}%'"