繁体   English   中英

仅更新Google Cloud Datastore中实体的某些字段的问题

[英]Problem with updating only some fields of entities in Google Cloud Datastore

我使用Python在Google Cloud Datastore中创建了一个实体,方法是:

client = datastore.Client()

key = client.key('EntityType', id)
entity = datastore.Entity(key=key)
entity.update({'id': id, 'property_0': value_0, 'property_1': value_1,})

此后,当我检查实体列表时,我有了一个具有3个属性idproperty_0property_1的新实体

在另一个函数中,我只更新了property_2 ,我这样做是这样

key = client.key('EntityType', id)
entity = datastore.Entity(key=key)
entity.update({'property_1': new_value_1,})

在此之后检查实体列表时,我只会看到具有新值的实体的property_2

如何仅更新实体的property_1 ,同时又保留其他property_1

您需要先获取它

key = client.key('EntityType', id)
entity = client.get(key)
entity.update({'property_2': new_value_2,})

如果只想更新实体的某些属性,则不应使用.update()方法,该方法将删除未分配任何值的属性。 相反,您可以手动设置要更改的属性的值,如以下示例所示:

# We first create the entity with the properties we want by using the update method.
client = datastore.Client()
key = client.key('EntityType', id)
entity = datastore.Entity(key=key)
entity.update({'property_0': 'a_string_value', 'property_1': 123})
client.put(entity)

# Then later we just fetch that entity and change the property we want.
client = datastore.Client()
key = client.key('EntityType', id)
entity = datastore.Entity(key=key)
entity['property_0'] = 'a_different_string_value'
client.put(entity)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM