为数据存储区实体指定密钥

时间:2014-11-17 08:08:03

标签: python google-app-engine google-cloud-datastore app-engine-ndb

我仍然试图了解数据存储的工作原理。我以前没有数据库的经验,所以这不是一个相互冲突的范式;我想我只是对NDB的祖先结构感到困惑。

假设我有这个模型类:

class Spam(Model.ndb)
    eggs = ndb.StringProperty();

所以我创建一个实例并将其存储为:

foo = Spam(eggs="some string")
foo.put()

我理解put()会返回一个我可以轻松调用get()的密钥,如果我尝试从同一个脚本访问它,但有没有办法指定我自己的密钥,所以我可以从我应用中的其他脚本轻松访问foo实体吗?

我意识到我可以为此foo指定一个父级:

foo = Spam(parent=ndb.Key("Bar","Baz"),eggs="some string")

但是,从那里开始,我将如何使用"Bar"和/或"Baz"访问其他脚本中的foo

1 个答案:

答案 0 :(得分:1)

如果您有层次结构,则使用父级。因此,如果您有食谱书,您可以将该书作为父母和每个食谱作为孩子。我不认为这就是你想要的。

如果要设置密钥,请执行以下操作:

SuperEggs= Spam(id='SuperEggs', eggs="2 egg whites")
SuperEggs.put()

你总是可以让App引擎设置自己的密钥,这样可以防止争用和意外的过度骑行,当你想再次访问实体时,只需在某些字段上进行操作即可。添加名称并搜索。

仅供参考,来自看跌期权的返回ID允许您从应用程序的任何部分(或任何授权的应用程序)进行访问。数据存储区是全局的,不是特定于脚本的。