有没有办法在 gcloud-python 中保存嵌套实体?
Posted
技术标签:
【中文标题】有没有办法在 gcloud-python 中保存嵌套实体?【英文标题】:Is there a way to save nested entities in gcloud-python? 【发布时间】:2016-06-27 11:07:33 【问题描述】:我正在尝试将一个对象保存到 Cloud Datastore,该对象包含一个字典作为属性值:
client = datastore.Client(project_id)
key = client.key('Config', 'config', 'Environment', 'env_name')
env = datastore.entity.Entity(key)
env['prop1'] = dict(foo='bar')
client.put(env)
但它提高了
ValueError: Unknown protobuf attr type
虽然我可以使用 gcloud-node 做到这一点。
是否可以使用 gcloud-python 保存复合对象?
【问题讨论】:
【参考方案1】:听起来您对存储嵌入式实体感兴趣,我相信这是 gcloud-node 自动执行的操作。
我认为您可以通过将字段 (prop1
) 设置为包含子属性 (foo
) 设置为 'bar'
的 datastore.Entity
来做到这一点。
client = datastore.Client(project_id)
key = client.key('Config', 'config', 'Environment', 'env_name')
env = datastore.Entity(key)
env['prop1'] = datastore.Entity(key=client.key('EmbeddedKind')
env['prop1']['foo'] = 'bar'
client.put(env)
当你把它拿回来时,它看起来像......
>>> c.get(env.key)
<Entity['kind': u'Config', 'name': u'config', 'kind': u'Env', 'name': u'env_name'] u'prop1': <Entity['kind': u'Embedded'] u'foo': 'bar'>>
【讨论】:
感谢您的回复!当我使用 gcloud-node 创建子实体时,它不会创建新类型,为什么它是 gcloud-python 中的唯一方法?最好避免像 gcloud-node 那样为嵌入式实体创建一种新类型。 我同意 - 有兴趣针对 gcloud-python 提出问题,以便那边的人可以开始工作吗?以上是关于有没有办法在 gcloud-python 中保存嵌套实体?的主要内容,如果未能解决你的问题,请参考以下文章
使用 gcloud-python 在 Google Cloud Storage 中设置元数据
编译天嵌官方的linux-2.6.30.4内核下载到TQ2440开发板不断重启的解决办法