我已经在各处进行了调查,但似乎找不到答案。 希望我没有重复提问(因为这是我在 SO 上的第一个问题)。
我正在尝试使用 Peewee 编写 select 查询,通常在 SQL 世界中会写成 WHERE foo = NULL;。
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)
不幸的是,这仍然不能产生选择删除行的正确语法。
and not Peers.deleted
- Foo Bar User