繁体   English   中英

操作员“不喜欢”与 peewee

[英]Operator "NOT LIKE" with peewee

我需要一个查询,其中内容“不喜欢”的值为

query = (Table
                .select()
                .where((Table.lastseen < olddate.isoformat()) &
                       (Table.used==1) &
                       (Table.ip !% '%/%' ))
                .order_by(Table.lastseen.asc())
            )

的,不做的伎俩? 我如何让 LIKE 被否定?

你必须使用~而不是! . 这就是peewee中否定的工作方式。 您需要使用括号来包装您希望否定的查询。 在你的情况下(~(Table.ip % '%/%' ))

query = (Table
                .select()
                .where((Table.lastseen < olddate.isoformat()) &
                       (Table.used==1) &
                       (~(Table.ip % '%/%' )))
                .order_by(Table.lastseen.asc())
            )

最小可重现示例(摘自 peewee 文档的片段)

from datetime import date
from peewee import *

db = SqliteDatabase('people.db')

class Person(Model):
    name = CharField()
    birthday = DateField()

    class Meta:
        database = db # This model uses the "people.db" database.

db.connect()
db.create_tables([Person])

uncle_bob = Person(name='Bob', birthday=date(1960, 1, 15))
uncle_bob.save()
aunt_alice = Person(name='Alice', birthday=date(1965, 1, 15))
aunt_alice.save()

query = Person.select().where(~(Person.name % 'B*')) # not like 'B%', wildcard changes according to database, `*` instead of `%` for SQLite

for i in query:
    print(i.name) # Alice

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM