Есть ли способ сохранить вложенные сущности в 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'}>}>