【问题标题】:Getting The Most Recent Data Item - Google App Engine - Python获取最新的数据项 - Google App Engine - Python
【发布时间】:2011-04-28 06:36:33
【问题描述】:

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

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]

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

【问题讨论】:

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


    【解决方案1】:

    如果您要遍历一个框列表,这是一种非常糟糕的方法。您将为每个框运行一个附加查询。您可以轻松查看Appstats 发生的情况。

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

    如果可能,将lastItem 属性添加到Box 或将Box ID您的属性)存储在Item 上会明显更快。换句话说,对数据进行非规范化。如果您要获取 Box 列表及其最近的项目,您需要使用这种方法。

    【讨论】:

    • 完美。我向 Box 添加了 lastItem 属性,每次我向 Box 添加项目时都会更新该属性。那好多了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多