获取最新数据项 - Google App Engine - Python

时间:2010-10-20 20:26:26

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

我需要检索添加到集合中的最新项目。我正是这样做的:

class Box(db.Model):
    ID = db.IntegerProperty()

class Item(db.Model):
    box = db.ReferenceProperty(Action, collection_name='items')
    date = db.DateTimeProperty(auto_now_add=True)

#get most recent item
lastItem = box.items.order('-date')[0]

这是一种昂贵的方式吗?还有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

如果你要迭代一个盒子列表,这是一个非常糟糕的方法。您将为每个框运行其他查询。您可以使用Appstats轻松查看正在进行的操作。

如果您按照请求执行其中一项,则可能没问题。不过这是不理想的。您可能还想使用:lastItem = box.items.order('-date').get()get只会将第一个结果返回给应用。

如果可能的话,将lastItem属性添加到Box或将Box ID您的属性)存储在{{1}上的速度要快得多}。换句话说,对数据进行非规范化。如果您要获取Box的列表及其最近的项目需要以使用此类方法。