仅更新 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 个属性 id
、property_0
和 property_1
的新实体
在另一个函数中,我只更新了 property_2
,我是这样做的
key = client.key('EntityType', id)
entity = datastore.Entity(key=key)
entity.update({'property_1': new_value_1,})
此后检查实体列表时,我只看到 property_2
个具有新值的实体。
如何只更新实体的 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)
我使用 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 个属性 id
、property_0
和 property_1
在另一个函数中,我只更新了 property_2
,我是这样做的
key = client.key('EntityType', id)
entity = datastore.Entity(key=key)
entity.update({'property_1': new_value_1,})
此后检查实体列表时,我只看到 property_2
个具有新值的实体。
如何只更新实体的 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)