如何跟踪新添加的记录到NDB数据存储区?

时间:2012-08-11 10:40:51

标签: google-app-engine google-cloud-datastore app-engine-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.

有没有其他方法可以做同样的事情? 或者,我是错的,从绩效角度来看两种方法都是一样的吗?

2 个答案:

答案 0 :(得分:3)

不,没有别的办法。

由于额外的get请求,这会影响性能,但“获取”的速度非常快and cheap,因此请不要担心。

答案 1 :(得分:2)

正如@Peter所说:获取操作非常便宜,我不会担心它,但你仍然可以将电影ID存储在内存缓存中并主要检查它是否在那里,如果它在那里那么电影是不是新的,如果不在那里检查数据存储区。