通过 GQL 或GROUP
方法在App Engine中有Query
BY的某种方法吗?
我做了一些研究,我读过 GQL 中没有GROUP BY
,看起来Query
类中也没有。{/ p>
如果有任何资源或任何方法可以使用 Python 实施,请告知我们。
修改
我还读到可以用Map Reduce制作GROUP BY
。如果有人有此经验,将接受帮助。
感谢。
答案 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模板中的数据来解决该问题。
对于计算或其他类型的聚合,您需要在内存中执行此操作。