我必须进行一个包含带有通配符'%‘的SQL LIKE子句的查询。它还具有用户输入数据。
查询的形式如下:
SELECT * FROM my_table
WHERE x = <user_input>
AND y NOT LIKE '%abc%'如何在Python的psycopg2模块中做到这一点?
下列代码不起作用:
cur.execute(
"""SELECT * FROM my_table
WHERE x = %s
AND y NOT LIKE '%abc%'
""", (user_input,)
)可能是因为LIKE子句中的通配符。
对我该怎么做有什么建议吗?提前谢谢。
发布于 2018-12-04 13:50:20
您可以简单地通过变量传递模式,例如:
pattern = '%abc%'
cursor.execute(
"""SELECT * FROM my_table
WHERE x = %s
AND y NOT LIKE %s
""", (user_input, pattern)
)或者,通过加倍方式转义模式中的%字符(因此函数不会将它们视为占位符):
cursor.execute(
"""SELECT * FROM my_table
WHERE x = %s
AND y NOT LIKE '%%abc%%'
""", (user_input,)
)https://stackoverflow.com/questions/53610248
复制相似问题