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

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

Я пытаюсь написать запрос select с помощью 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; но ничто в Крошке, кажется, не делает этого.

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

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

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

должно быть:

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

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

1 ответов


во-первых, вы должны использовать битовые операнды Для "и" и "или". Потом имеет значение null, используйте >>:

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

для NOT null вы бы отрицали его:

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

документально подтверждено:http://peewee.readthedocs.org/en/latest/peewee/querying.html#query-operators