多个子字符串不在列中,带有 peewee orm

Multiple substrings not in column, with peewee orm

我正在使用带有 sqlite 的 Peewee ORM table。我有以下 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,但不确定如何在此处应用。

您可以这样修改查询,这样就可以了:

mytable.select().where(mytable.name == '%string1%' | mytable.name == '%string2%' | mytable.name == '%string1%')

这应该适用于您的情况。

你会想要:

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']))