似乎没有任何关于如何在 GQL 查询的 where 语句中使用布尔参数查询数据存储的文档。
我一直在尝试基于布尔列查询 AppEngine 数据存储,但它没有在 AppEngine 仪表板的数据查看器中返回任何结果。
我尝试了以下方法:
SELECT * FROM users WHERE active=TRUE
SELECT * FROM users WHERE active=True
任何帮助将不胜感激。
似乎没有任何关于如何在 GQL 查询的 where 语句中使用布尔参数查询数据存储的文档。
我一直在尝试基于布尔列查询 AppEngine 数据存储,但它没有在 AppEngine 仪表板的数据查看器中返回任何结果。
我尝试了以下方法:
SELECT * FROM users WHERE active=TRUE
SELECT * FROM users WHERE active=True
任何帮助将不胜感激。
根据文档,GQL 布尔比较的正确语法是
SELECT * FROM users WHERE active = TRUE
请参阅https://developers.google.com/appengine/docs/python/datastore/gqlreference
现在,如果您没有得到结果,那么该active
属性对于所有实体都不是 True,或者该属性active
实际上不是 bool 类型。
为了完整起见,我执行了以下查询并得到了预期的结果。
SELECT * FROM Plant where flowering = TRUE
请检查您是否在要过滤的文件上有索引(在您的情况下,请确保您已在“用户”实体中为“活动”属性编制索引)
我最后尝试了这个实验,发现如果没有索引,数据存储不会返回任何结果。这在 Google 的文档中进行了解释:Datastore Indexes,相关段落是:
每个 Datastore 查询都使用一个或多个索引、包含按索引属性指定的序列中的实体的表以及可选的实体的祖先来计算其结果...
您可以使用
SELECT * FROM users WHERE active = true
确保真/假是小写
这肯定会奏效。
我必须指定 True / False(以大写 T / F 开头)才能在查询中工作。但是,它在数据存储查看器中以全小写形式显示布尔值。