多个子字符串不在列中,带有 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']))
我正在使用带有 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']))