普通的百分号赋值使用:
print("%s" % "ann")
假如我们想在前面加个百分号:
print("%%s" % "ann")
运行后提示错误:
TypeError: not all arguments converted during string formatting
这是转义的错误,如果我们想显示第一个百分号,就要使用两个百分号:
print("%%%s" % "ann")
同理,如果我们想在首尾均加上百分号,就要写四个百分号:
print("%%%s%%" % "ann")
python3.7以后,字符串格式化有了新的写法:
name = "ann"
print(f"%{name}%")
也能实现首尾加上两个百分号的效果。
在sqlalchemy中,要实现模糊查询可以使用contains,如:
key = "ann"
session.query(A).filter(A.name.contains(key)).all()
sql语句中使用like:
select * from A where A.name like "%ann%"
如果在sqlalchemy中使用like,因为有两个百分号,如果要使用字符串的百分号格式化方法,就应该有四个百分号,因为平常代码中的都是get值之后查询,一般不会固定定义为某个字符串:
key = "ann"
session.query(A).filter(A.name.like("%%%s%%" % key)).all()
over~