Я исследовал это везде и не могу найти ответ. Надеюсь, я не продублировал это (поскольку это мой первый вопрос о SO).
Я пытаюсь написать запрос выбора с Peewee, который обычно идет ... WHERE 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
не сработало, но это привело меня к дополнительной информации. Кажется, крошка хочет, чтобы пункты where
были связаны вместе. Итак, вместо
Peers.select().where(Peers.user == 'foo' and Peers.deleted is None)
должен быть:
Peers.select().where(Peers.user == 'foo').where(Peers.deleted is None)
К сожалению, это по-прежнему не дает правильного синтаксиса для выбора нулевых строк в удаленных.
and not Peers.deleted
- person Foo Bar User   schedule 09.10.2013