NDB密钥与get_by_id

Eag*_*gle 1 python google-app-engine app-engine-ndb

只是想知道我是否犯了错误:

get()操作使用NDB缓存,所以这个(章节是ndb.Model类):

# Get the entity
chapter_key = ndb.Key('Book', long(bookId), 'Chapter', long(chapterId))
chapter = chapter_key.get()
Run Code Online (Sandbox Code Playgroud)

如果是实体的第二次或更多次读取,则可以使用ndb缓存.

但是,如果我这样做?

Chapter.get_by_id(long(id), parent=ndb.Key('Book', long(bookId)))
Run Code Online (Sandbox Code Playgroud)

这是由ndb管理,还是这个操作是一个标准的数据库操作,不使用缓存?

Gre*_*reg 6

Model.get_by_id 将以完全相同的方式使用context-cache和memcache Key.get

  • 根据[get_by_id的文档](https://developers.google.com/appengine/docs/python/ndb/modelclass#Model_get_by_id):"这实际上只是`Key(cls,id).get的缩写. )`".所以是的,除了写作风格之外似乎没有区别. (2认同)