Синтаксис Peewee для выбора на нулевом поле

Я исследовал это везде и не могу найти ответ. Я надеюсь, что я не дублировал это (поскольку это мой первый вопрос по SO).

Я пытаюсь написать запрос выбора с Peewee, который обычно идет... ГДЕ foo = NULL; в мире SQL.

MySQL выглядит так:

+-----------+-------------+------+-----+---------+----------------+  
| Field     | Type        | Null | Key | Default | Extra          |  
+-----------+-------------+------+-----+---------+----------------+  
| id        | bigint(20)  | NO   | PRI | NULL    | auto_increment |  
| user      | varchar(30) | NO   |     | NULL    |                |  
| peer      | varchar(30) | NO   |     | NULL    |                |  
| deleted   | date        | YES  |     | NULL    |                |  
| confirmed | date        | YES  |     | NULL    |                |  
+-----------+-------------+------+-----+---------+----------------+  

Мой запрос на выборку выглядит так:

Peers.select().where(Peers.user == 'foo' and Peers.deleted is None)

Но это не работает! я пробовал Peers.deleted == "" а также Peers.deleted == "NULL", Синтаксис MySQL должен заканчиваться на WHERE deleted is NULL; но ничто в Peewee, кажется, не делает этого.

Кто-нибудь может помочь? Чего мне не хватает в документах?

Обновлено с Foo Bar Комментарий пользователя:and not Peers.deleted не работал, но это привело меня к дополнительной информации. Кажется, что peewee хочет where пункты скованы вместе. Так что вместо

Peers.select().where(Peers.user == 'foo' and Peers.deleted is None)

так должно быть:

Peers.select().where(Peers.user == 'foo').where(Peers.deleted is None)

К сожалению, это все еще не дает правильный синтаксис для выбора на нулевых строках в удаленных.

1 ответ

Решение

Прежде всего вы должны использовать побитовые операнды для "и" и "или". Тогда для ноль, используйте >>:

Peers.select().where((Peers.user == 'foo') & Peers.deleted.is_null())

Для не нуль вы бы отрицали это:

Peers.select().where(Peers.deleted.is_null(False))

Это задокументировано: http://peewee.readthedocs.org/en/latest/peewee/querying.html

Другие вопросы по тегам