tha*_*vik 15 python mysql null isnull peewee
我到处研究过这个,似乎无法找到答案.我希望我没有重复这个(因为这是我关于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 | |
+-----------+-------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
我的选择查询如下所示:
Peers.select().where(Peers.user == 'foo' and Peers.deleted is None)
Run Code Online (Sandbox Code Playgroud)
但它不起作用!我试过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)
遗憾的是,仍然没有产生正确的语法来选择已删除的空行.
col*_*fer 24
首先,您必须使用"和"和"或"的按位操作数.然后for为null,使用>>
:
Peers.select().where((Peers.user == 'foo') & Peers.deleted.is_null())
Run Code Online (Sandbox Code Playgroud)
如果不为null,你会否定它:
Peers.select().where(Peers.deleted.is_null(False))
Run Code Online (Sandbox Code Playgroud)
记录在案:http://peewee.readthedocs.org/en/latest/peewee/querying.html#query-operators
归档时间: |
|
查看次数: |
10162 次 |
最近记录: |