获取最近的数据项 - Google App Engine - Python

2 投票
1 回答
711 浏览
提问于 2025-04-16 05:49

我需要从一个集合中获取最近添加的项目。以下是我现在的做法:

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 个回答

4

如果你要遍历一个装箱子的列表,这样做可不好。你每处理一个箱子就会多发一次查询,这样效率很低。你可以通过Appstats工具轻松查看发生了什么。

如果你每次请求只做一次这样的操作,可能还可以接受,但这并不是最理想的做法。你也可以试试用这个代码:lastItem = box.items.order('-date').get()。这里的get方法只会返回第一个结果给应用。

如果可能的话,给Box添加一个lastItem属性,或者在Item中存储Box ID(也就是你的属性),这样会快很多。换句话说,就是把数据结构简化一下。如果你要获取一系列箱子及其最新的物品,你必须采用这种方法。

撰写回答