我试图在Peewee中查询应该在其中具有特定子字符串的结果。
例如,如果我只想要名称为“ Physics”的活动:
schedule = Session.select().join(Activity).where(Activity.name % "%Physics%").join(Course).join(StuCouRel).join(Student).where(Student.id == current_user.id)
上面的示例没有给出任何错误,但是不能正常工作。
在python中,我只会执行
if "Physics" in Activity.name
,因此我正在寻找可以在查询中使用的等效项。 最佳答案
快速回答:
只需使用Activity.name.contains('Physics')
根据您使用的数据库后端,您需要选择正确的“通配符”。 Postgresql和MySQL使用“%”,但是对于Sqlite,如果要执行LIKE
查询,则实际上将要使用“ *”(尽管对于ILIKE,它是“%”,令人困惑)。
我想猜测您正在使用SQLite,因为上面的查询失败了,因此,如果要区分大小写的部分字符串匹配:Activity.name % "*Physics*"
,而对于不区分大小写的:Activity.name ** "%Physics%"
,请使用SQLite进行回顾。
http://www.sqlite.org/lang_expr.html#like