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

标签 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]

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

最佳答案

如果你要迭代一个框列表,这是一个非常糟糕的方法。您将为每个框运行额外的查询。您可以通过 Appstats 轻松查看发生了什么情况.

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

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

关于python - 获取最新数据项 - Google App Engine - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3981997/

相关文章:

google-app-engine - 针对 GO 错误的 Google Glass 快速入门

java - Google App Engine - 数据存储 java.lang.IllegalArgumentException : entity is too big

python - 确定数据存储中存在一组键中的哪一个的最佳方法

python - python 2 中的 `in range` 构建 --- 工作太慢

python - angularjs+python(Flask)文件上传到服务器

python - 如何在 python 中从 HDFS sequencefile 加载数据

python - 查找多个二维数组中每个坐标的最频繁值

java - 谷歌云端点: serve XML

java.security.AccessControlException : access denied ("java.lang.RuntimePermission" "modifyThreadGroup")

google-app-engine - Google App Engine NDB Datastore get_by_id 获取实体