【问题标题】:Google Clode Datastore Client Library creating an entityGoogle Cloud Datastore 客户端库创建实体
【发布时间】:2019-03-22 10:32:28
【问题描述】:

我正在研究谷歌云数据存储 API 的一些文档

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

使用这两种来源,我创建了以下内容。我对 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)

【问题讨论】:

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


    【解决方案1】:

    我通常在没有命名空间的情况下直接创建键,只使用实体类型并让数据存储完成其余的工作(您也可以指定一个 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>)
    

    【讨论】:

    • 感谢您的回复。我正在运行 key = datastore_client.key('Collection') google.api_core.exceptions.InvalidArgument: 400 关键路径元素不能不完整:[Collection:] 我认为我需要研究一些概念,但应该将 . key() 正在创建用于集合的新密钥?
    • 我发布了一个不同的问题(认为是吗?)stackoverflow.com/questions/55620409/…
    猜你喜欢
    • 2018-07-27
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    相关资源
    最近更新 更多