Как отследить недавно добавленную запись в хранилище данных NDB?

Раньше я использовал следующий код:

def add_movie(movie_id, title, picture, description):
    movie = Movies(
        id=movie_id,
        title=title,
        picture=picture,
        description=description
        )
    movie.put()

но это не позволило мне узнать, был ли фильм добавлен как новая запись или был ли обновлен существующий фильм. Итак, я изменил код на следующий:

def add_movie(movie_id, title, picture, description):
    newly_added = True
    movie = Movies.get_by_id(movie_id)
    if movie:
        newly_added = False
    movie.id = movie_id
    movie.title = title
    movie.picture = picture
    movie.description = description
    movie.put()
    return newly_added

Но похоже, что он сначала получит фильм и только после этого обновит его. Таким образом, 2 запроса к хранилищу данных вместо 1.

Есть ли другой способ сделать то же самое? Или я ошибаюсь, и оба подхода одинаковы с точки зрения производительности?


person LA_    schedule 11.08.2012    source источник


Ответы (2)


Нет, другого выхода нет.

Это повлияет на производительность из-за дополнительного get запроса, но "get" выполняется довольно быстро и дешево, так что не беспокойтесь об этом.

person Peter Knego    schedule 11.08.2012

Как сказал @Peter: операции получения очень дешевы, и я бы не стал об этом беспокоиться, но вы все равно можете сохранить идентификатор фильма в кэше памяти и в первую очередь проверить, есть ли он там, если он там, то фильм не новый, если его нет, проверьте хранилище данных.

person Shay Erlichmen    schedule 11.08.2012