我需要GAE中的一个查询返回不包含null的行,这意味着它们已经完成

时间:2011-03-16 12:05:19

标签: google-app-engine gql

SELECT * FROM Feedback WHERE text =! None

Nul,也不起作用。

它不起作用......那我应该怎么写这个查询呢?

3 个答案:

答案 0 :(得分:3)

来自GAE文件: 无法查询缺少给定属性的实体。另一种方法是创建一个默认值为None的固定(建模)属性,然后为具有None作为属性值的实体创建一个过滤器。

您可以通过以下方式获得相同的结果:

def notnulls():
       return [z for z in db.GqlQuery('SELECT * FROM Feedback') if z.text]

这将返回一个Feedback对象列表,其中text字段不是None。虽然这确实有首先加载所有反馈对象的额外开销。

答案 1 :(得分:2)

具有null的实体不包含在该查询的索引中。您可能希望实际存储虚拟值,例如“无”/“空”。 (参考http://code.google.com/appengine/docs/python/datastore/queries.html#Restrictions_on_Queries

答案 2 :(得分:1)

试试这个:

select * from Feedback where text > ''

找到参考here。请注意,它没有文档,因此可能不是一个非常好的解决方案。