Google app engine Google应用程序引擎数据存储:创建和使用没有实体的密钥
我有一个奇怪的问题要问你们这些谷歌数据存储专家。 我一直在研究谷歌应用程序引擎的代码。 我发现这些代码行让我感到困惑Google app engine Google应用程序引擎数据存储:创建和使用没有实体的密钥,google-app-engine,google-cloud-datastore,google-app-engine-python,Google App Engine,Google Cloud Datastore,Google App Engine Python,我有一个奇怪的问题要问你们这些谷歌数据存储专家。 我一直在研究谷歌应用程序引擎的代码。 我发现这些代码行让我感到困惑 guestbook_key = ndb.Key(Greeting, DEFAULT_GUESTBOOK_NAME) mykey = ndb.Key( Greeting, # kind str(i+1), # id parent=guestbook_key # parent ) g
guestbook_key = ndb.Key(Greeting, DEFAULT_GUESTBOOK_NAME)
mykey = ndb.Key( Greeting, # kind
str(i+1), # id
parent=guestbook_key # parent
)
g = Greeting(key=mykey)`
我的问题是:作为父项,是否可以使用不存在的实体的密钥?
我之所以这么说是因为没有创建键为“guestbook_key”的实体(我搜索了整个代码,但没有找到任何东西)
是否仅为给实体提供公共根而创建,而不创建实体根 是的。来自(我的):
在示例中,('Account','sandy@foo.com)
,('Message',123)
,以及
('Revision','1')
都是种类标识符对的示例
注意,消息
不是一个模型类;它仅用于对修订进行分组,而不是存储数据。
可以使用命名参数parent指定
祖先路径直接。以下所有符号均表示
相同的键:
ndb.Key('Account', 'sandy@example.com', 'Message', 123, 'Revision', '1')
ndb.Key('Revision', '1', parent=ndb.Key(
'Account', 'sandy@example.com', 'Message', 123))
ndb.Key('Revision', '1', parent=ndb.Key(
'Message', 123, parent=ndb.Key('Account', 'sandy@example.com')))
在上面引用的示例中,消息
实体键用作修订版
实体的祖先键/父键,而实际不存在消息
实体
另一个这样的例子,这一次显示了整个实体组的根(公共祖先)实际上并不存在:键只是程序内存中的一个对象,甚至在将任何内容写入数据存储之前
将实体写入数据存储时,需要提供密钥(完整,如果需要自动ID,则不完整)和数据本身。是的,文档明确说明可以创建不引用实际实体的父密钥。
ndb.Key('Account', 'sandy@example.com', 'Message', 123, 'Revision', '1')
ndb.Key('Revision', '1', parent=ndb.Key(
'Account', 'sandy@example.com', 'Message', 123))
ndb.Key('Revision', '1', parent=ndb.Key(
'Message', 123, parent=ndb.Key('Account', 'sandy@example.com')))