Получение самого последнего элемента данных - Google App Engine - Python - PullRequest
2 голосов
/ 21 октября 2010

Мне нужно получить самый последний элемент, добавленный в коллекцию.Вот как я это делаю:

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 голосов
/ 21 октября 2010

Если вы собираетесь перебирать список ящиков, это очень плохой способ сделать это.Вы запустите дополнительный запрос для каждого окна.Вы можете легко увидеть, что происходит с Appstats .

Если вы выполняете один из них для каждого запроса, это может быть в порядке.Но это не идеально.Вы также можете использовать: lastItem = box.items.order('-date').get(). get вернет в приложение только первый результат.

Если возможно, будет значительно быстрее добавить свойство lastItem к Box или сохранить Box ID ( ваш атрибут ) на Item.Другими словами, денормализуйте данные.Если вы собираетесь получить список ящиков и их самый последний элемент, вам нужно , чтобы использовать этот тип подхода.

...