GAE:将多个查询合并为一个

时间:2010-01-16 10:45:30

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

我有一个productpart数据库,其中包含一个名为'type'的字符串属性。 我想要做的是按给定类型获取所有产品(有时多于一种类型)。

我尝试使用GAE过滤器方法但无法使其正常工作。

我唯一能解决的问题是为每种类型创建一个新的db.GqlQuery。

我需要按类型获取每个类型的原因是在客户端的不同位置显示它们吗?

有没有办法只使用一个查询?

目前它看起来像这样:

    productPartsEntries = {
                             'color' :  db.GqlQuery("SELECT * FROM ProductParts WHERE type = :type", type = 'color'),
                             'style' :  db.GqlQuery("SELECT * FROM ProductParts WHERE type = :type", type = 'style'),
                             'size' :  db.GqlQuery("SELECT * FROM ProductParts WHERE type = :type", type = 'size')
// add more....
}

..弗雷德里克

1 个答案:

答案 0 :(得分:2)

您可以使用IN运算符。它将创建三个不同的查询,并在幕后为您分组结果。请参阅docs

  

GQL没有OR运算符。   但是,它确实有一个IN运算符,   它提供有限形式的OR。

     

IN运算符比较a的值   属性到列表中的每个项目。该   IN运算符相当于很多=   查询,每个值一个,即   ORed在一起。一个实体的价值   对于给定的属性等于任何   可以返回列表中的值   对于查询。

     

注意:IN和!=运算符在后台使用多个查询。   例如,IN运算符执行   单独的基础数据存储区查询   对于列表中的每个项目。该   返回的实体是结果   所有潜在的产品的交叉产品   数据存储区查询和   消除重复。最多30个   任何数据存储区查询都是允许的   单个GQL查询。