多个子串不在列中,与peewee orm

时间:2017-08-21 17:25:57

标签: python orm peewee

我使用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,但不知道如何在此处应用此内容。

2 个答案:

答案 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%')

这适用于你的情况。