2

私はクラウドデータストアにオブジェクトを保存しようとしている、オブジェクトは、プロパティ値として辞書が含まれていますgcloud-pythonにネストされたエンティティを保存する方法はありますか?

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を使用して複合オブジェクトを保存することはできますか?

答えて

4

埋め込みエンティティの保存に興味があるようですが、これはgcloud-nodeが自動的に行うことだと思います。

私はあなたが'bar'に設定されたサブプロパティを含むdatastore.Entityfoo)にフィールド(prop1)を設定することで、これを行うことができると思います。

あなたはこのバックを取得すると、それがどのように見えるでしょう
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'}>}> 
+1

応答をありがとう! gcloud-nodeを使ってサブエンティティを作成すると、新しい種類は作成されません。なぜそれがgcloud-pythonの唯一の方法ですか? gcloud-nodeのような組み込みエンティティのための新しい種類の作成を避けるのは良いことです。 –

+3

私は同意します - gcloud-pythonに対する問題を提出することに興味があるので、そこにいる人はそれに取り組むことができますか? –

関連する問題