【发布时间】:2013-10-08 22:54:19
【问题描述】:
我到处研究过这个问题,但似乎找不到答案。我希望我没有重复这个(因为这是我关于 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 没用,但它让我了解了更多信息。似乎 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
标签: python mysql null isnull peewee