2017-07-06 46 views
1

如何在不刪除所有其他屬性的情況下只更新Google雲數據存儲中實體的一個屬性?更新谷歌雲數據存儲中實體的一個屬性python

key = client.key('employee', ID) 
employee_to_deactivate = datastore.Entity(key) 
employee_to_deactivate.update({ 
    'active':False, 
}) 

這會將活動屬性更新爲False,但會刪除所有其他屬性。

+0

檢查這個答案:這個複製](https://stackoverflow.com/questions/5067418/update-an-entity-in -datastore-app-engine) – kattybilly

回答

2

您無法更新實體的特定屬性。所有寫入(插入,更新)都必須包含應該保留的所有屬性。無論何時需要進行更新,都需要首先檢索現有實體作爲整體,然後通過設置新值並更新實體來更新一個或多個屬性。

+0

非常感謝,你知道他們爲什麼決定稱之爲'更新'嗎?似乎很差的命名約定 –

0

正如前面的回答中所述,您需要爲更新實體時要保留的每個屬性設置值。

更新單個屬性時重新使用以前屬性值的一種方法是迭代實體。當使用從datastore documentation示例代碼,這將如下所示:

with client.transaction(): 
    key = client.key('Task', 'sample_task') 
    task = client.get(key) 

    # iterate through the entity to take over all existing property values 
    for prop in task: 
      task[prop] = task[prop] 

    task['done'] = True 

    client.put(task) 
相關問題