Google cloud platform 仅更新Google云数据存储中实体的某些字段存在问题

Google cloud platform 仅更新Google云数据存储中实体的某些字段存在问题,google-cloud-platform,nosql,google-cloud-datastore,database-update,Google Cloud Platform,Nosql,Google Cloud Datastore,Database Update,我使用Python在Google云数据存储中创建了一个实体,如下所示: 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个属性id、propert

我使用Python在Google云数据存储中创建了一个实体,如下所示:

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个属性
id
property\u 0
property\u 1

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

key = client.key('EntityType', id)
entity = datastore.Entity(key=key)
entity.update({'property_1': new_value_1,})
当我在这之后检查实体列表时,我只看到实体的
property_2
和新值


如何仅更新实体的
属性_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)