Есть ли способ сохранить вложенные сущности в gcloud-python?

Я пытаюсь сохранить объект в 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: Неизвестный тип атрибута protobuf

Хотя я могу сделать это с помощью gcloud-node.

Можно ли сохранить составной объект с помощью gcloud-python?

1 ответ

Похоже, вы заинтересованы в хранении встроенной сущности, что, как я считаю, и есть то, что gcloud-node выполняет автоматически

Я думаю, что вы можете сделать это, установив поле (prop1) к datastore.Entity содержащий подсвойство (foo) установлен в 'bar',

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'}>}>
Другие вопросы по тегам