我使用Peewee ORM和sqlite表。我有以下sqllite声明:
SELECT * FROM mytable WHERE name LIKE '% string1 %' or name LIKE '%string2 %' OR name LIKE '%string3 %'
我怎样才能在Peewee做到这一点?
注意我已阅读http://docs.peewee-orm.com/en/latest/peewee/querying.html#query-operators,但不知道如何在此处应用此内容。
答案 0 :(得分:2)
你会想要:
MyModel.select().where(
MyModel.name.contains('string1') |
MyModel.name.contains('string2') |
MyModel.name.contains('string3'))
或者,直接使用不区分大小写的LIKE:
MyModel.select().where(
(MyModel.name ** '%string1%') |
(MyModel.name ** '%string2%') |
(MyModel.name ** '%string3%'))
做一个NOT IN:
MyModel.select().where(MyModel.name.not_in(['string1', 'string2']))
答案 1 :(得分:0)
您可以修改查询,这样可行:
mytable.select().where(mytable.name == '%string1%' | mytable.name == '%string2%' | mytable.name == '%string1%')
这适用于你的情况。