我正在阅读有关Google Cloud Datastore API的一些文档
即earlier in the file, in this block 和 https://googleapis.github.io/google-cloud-python/latest/datastore/client.html
使用两个来源,我都创建了以下内容。我对client.key()(即1234和名称空间)感到非常困惑。我的数据存储区显示的密钥似乎是随机的?唯一编号,我还没有看到任何对名称空间的引用。为什么此代码示例指定整数和名称空间?有没有更好的方法来生成密钥,或者可以安全地省略这两个参数?
from google.cloud import datastore
client = datastore.Client()
key = client.key('Collection', 1234, namespace='_Doctest')
entity = datastore.Entity(key=key)
entity['property'] = 'value'
client.put(entity)
答案 0 :(得分:1)
我通常不使用名称空间直接创建键,只使用Entity种类,然后让数据存储完成其余工作(您也可以指定ID,但这是可选的),这种方式是您创建实体使用 partial 键(仅指定种类),并且一旦您在数据存储区中 put
实体,该实体密钥就会使用ID更新为完整密钥(现在具有种类和ID )
key = client.key('Collection') # create partial key <Key('Collection')>
entity = datastore.Entity(key=key) # create entity using the partial key
entity['property'] = 'value'
client.put(entity)
# Print the full key <Key('Collection', 5293786145123) project=project-id>
print(f"Entity key = {entity.key}")
注意:您还可以通过将父键添加到新的实体键分配中,来创建带有父键(实体组)的键第一行
key = client.key('Collection', parent=<parent_key>)