如何在App Engine中进行GROUP BY

时间:2012-02-08 23:42:42

标签: python google-app-engine gql gqlquery

通过 GQL GROUP方法在App Engine中有Query BY的某种方法吗?

我做了一些研究,我读过 GQL 中没有GROUP BY,看起来Query类中也没有。{/ p>

如果有任何资源或任何方法可以使用 Python 实施,请告知我们。


修改

我还读到可以用Map Reduce制作GROUP BY。如果有人有此经验,将接受帮助。

感谢。

3 个答案:

答案 0 :(得分:4)

不,数据存储区不支持任何类型的数据库端处理或聚合。解决方案是在内存中进行所有后期处理。这样做的两种方法是在每个请求中,或使用map reduce。两种解决方案都将始终返回查询中的所有行,但是如何获取行的方式会有所不同。

答案 1 :(得分:2)

您无法使用appengine库执行GROUP BY次查询。这是NoSQL数据库体系结构的失败,在gereral中(谷歌的BigTable是一个实现)。

根据您对GROUP BY的处理方式,替代方法可能符合您的需求。对于您要查询GROUP BY的每个“类型”模型,构建一个db.Model类来表示每个类型。然后直接查询这些类。

或者,如果您预先知道返回的组的值,则可以Query#filter()为每个值,并将这些查询视为GROUP BY ed集。

答案 2 :(得分:1)

我想解决方案最终取决于您计划对分组数据进行的操作。如果分组要求是为了简化HTML代码中的输出,那么您可以通过regrouping模板中的数据来解决该问题。

对于计算或其他类型的聚合,您需要在内存中执行此操作。