在GQL(Google App Engine)上获取4个不重复的最新结果

时间:2013-01-04 04:38:31

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

您好我的GAE申请表上有这个:

try:
    last = RegistroDescargas.gql("order by date DESC LIMIT 4")
except:
    last = None

有了这个,我可以得到数据库的最后四行(“RegistroDescagas”)定义如下:

class RegistroDescargas(db.Model):
    '''Model para guardar el registro de vídeos descargados en la web'''
    date = db.DateTimeProperty(auto_now_add=True)
    urlOrig = db.StringProperty(required=True)
    urlImg = db.StringProperty(required=True)
    vidTit = db.StringProperty(required=True)
    vidDesc = db.TextProperty()

但是,当然,如果重复一个或最后四个结果,只是告诉我,我想要的是最后不重复四行,我不知道我怎么做......

有什么建议吗? (我想,如果最终这是可能的,可能会有一个完全不同的句子,但我不介意;))

任何帮助非常感谢..抱歉我的英文..

2 个答案:

答案 0 :(得分:1)

GQL不支持DISTINCT查询。您可以做的壁橱是将结果放入一个集合中,并检查集合中的条目数量。如果少于四个,则查询其他记录。

这个答案更深入:Python: DISTINCT on GQuery result set (GQL, GAE)

否则,需要预先计算这种不同的列表。 GAE遵循一系列昂贵的写入来实现超快速读取。

答案 1 :(得分:0)

DISTINCT关键字是在release 1.7.4.中引入的。

您可以找到更新的GQL参考(例如Python)here