【问题标题】:How to query GQL for boolean value?如何查询 GQL 的布尔值?
【发布时间】:2013-09-10 08:56:43
【问题描述】:

似乎没有任何关于如何在 GQL 查询的 where 语句中使用布尔参数查询数据存储的文档。

我一直在尝试基于布尔列查询 AppEngine 数据存储,但它没有在 AppEngine 仪表板的数据查看器中返回任何结果。

我尝试了以下方法:

SELECT * FROM users WHERE active=TRUE
SELECT * FROM users WHERE active=True

任何帮助将不胜感激。

【问题讨论】:

  • 不是真的,它不在文档中。是的。

标签: google-app-engine google-cloud-datastore gql


【解决方案1】:

根据文档,GQL 布尔比较的正确语法是

SELECT * FROM users WHERE active = TRUE

见https://developers.google.com/appengine/docs/python/datastore/gqlreference

现在,如果您没有得到结果,那么active 属性不是对所有实体都为 True,或者active 属性实际上不是布尔类型。

为了完整起见,我执行了以下查询,得到了预期的结果。

SELECT * FROM Plant where flowering = TRUE

【讨论】:

  • 我已经确认数据类型是布尔值,但是查询没有返回任何真假结果。
  • 您是否确认您有任何具有此属性值的实体
【解决方案2】:

请检查您是否在要过滤的字段上有索引(在您的情况下,请确保您已索引“用户”实体中的“活动”属性)

我最后尝试了这个实验,发现如果没有索引,数据存储不会返回任何结果。这在 Google 的文档中进行了解释:Datastore Indexes,相关段落是:

每个 Datastore 查询都使用一个或多个索引、包含按索引属性指定的顺序排列的实体的表以及实体的祖先(可选)来计算其结果...

【讨论】:

    【解决方案3】:

    你可以使用

        SELECT * FROM users WHERE active = true
    

    确保真/假小写

    这肯定会奏效。

    【讨论】:

      【解决方案4】:

      我必须指定 True / False(以大写 T / F 开头)才能在查询中工作。但是,它在数据存储查看器中以全小写形式显示布尔值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-21
        • 2019-11-14
        • 1970-01-01
        • 2018-08-13
        • 1970-01-01
        • 2011-04-08
        • 1970-01-01
        • 2014-12-22
        相关资源
        最近更新 更多