Google app engine 获得不同值的最佳方法

Google app engine 获得不同值的最佳方法,google-app-engine,app-engine-ndb,Google App Engine,App Engine Ndb,我正在使用谷歌Appengine NDB。我试图从数据库中获取不同的值,但它不起作用 Now my code is: query_set = cls.query().order(cls.ls) # Getting ordered queries. set_of_field = set([data.field for data in query_set]) # And using this loop for differ.` 现在我的代码是: query_set=cls.query().o

我正在使用谷歌Appengine NDB。我试图从数据库中获取不同的值,但它不起作用

Now my code is: query_set = cls.query().order(cls.ls) # Getting ordered queries. set_of_field = set([data.field for data in query_set]) # And using this loop for differ.` 现在我的代码是: query_set=cls.query().order(cls.ls)#获取有序查询。 set_of_field=set([data.field用于查询_set中的数据])#并使用此循环进行差异` 但是循环时间太长(超过12秒)。 请帮助我,如何加快速度,或者如何从ndb获取不同的值?

尝试不同的查询, 如果您的字段已编入索引,则可以使用:


但是,如果你有一个庞大的列表,你可以在任务队列中执行此操作并将结果存储在某个位置,或者只在另一个模型中保留一个不同的数据。

是的,已经尝试过了。但是有一个错误:
TypeError:\uuuu init\uuuu()得到了一个意外的关键字参数“distinct”
。现在我正在使用taskqueue,谢谢你的回答。返回并根据答案尝试
distinct
——你确定你有当前的SDK吗。我刚刚尝试了distinct-
x=models.Product.query(projection=[“Product_-type”],distinct=True)
并且它可以像广告一样工作。在最新的SDK 1.9.28.388上对我有效。需要注意的是:只有在projection/distinct作为query()的一部分而不是作为查询对象的fetch的一部分给出时,它才起作用。一个问题:拥有一个可能重复的模型和执行上述查询以获得不同的值与维护两个模型(其中一个模型始终只包含不同的值)之间的权衡是什么?
query_set = cls.query(projection=["field"], distinct=True)
set_of_field = [data.field for data in query_set]