Google Clode数据存储客户端库创建实体

时间:2019-03-22 10:32:28

标签: python google-cloud-platform google-cloud-datastore

我正在阅读有关Google Cloud Datastore API的一些文档

earlier in the file, in this blockhttps://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)

https://googleapis.github.io/google-cloud-python/latest/_modules/google/cloud/datastore/entity.html#Entity

1 个答案:

答案 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>)