2017-07-06 1 views
1

Wie aktualisiere ich nur eine Eigenschaft einer Entität im Google Cloud-Datenspeicher, ohne alle anderen Eigenschaften zu entfernen?Aktualisieren einer Eigenschaft einer Entität in Google Cloud-Datenspeicher python

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

Dies aktualisiert die aktive Eigenschaft auf False, aber entfernt alle anderen Eigenschaften.

+0

Überprüfen Sie diese Antwort: [Duplikat dieser] (https://stackoverflow.com/questions/5067418/update-an-entity-in -datastore-app-engine) – kattybilly

Antwort

2

Sie können bestimmte Eigenschaften einer Entität nicht aktualisieren. Alle Schreibvorgänge (Einfügungen, Aktualisierungen) müssen alle Eigenschaften enthalten, die beibehalten werden sollen. Wenn Sie ein Update durchführen müssen, müssen Sie zunächst die vorhandene Entität als Ganzes abrufen und dann eine oder mehrere Eigenschaften aktualisieren, indem Sie neue Werte festlegen und die Entität aktualisieren.

+0

vielen dank, wissen sie, warum sie beschlossen haben, es "update" zu nennen? scheint eine schlechte Benennungskonvention zu sein –

0

Wie in der vorherigen Antwort erwähnt, müssen Sie Werte für jede Eigenschaft festlegen, die Sie beim Aktualisieren Ihrer Entität behalten möchten.

Eine Möglichkeit zur Wiederverwendung der vorherigen Eigenschaftswerte beim Aktualisieren einer einzelnen Eigenschaft besteht darin, über die Entität zu iterieren. Wenn Sie den Beispielcode aus dem datastore documentation verwenden, würde dies wie folgt aussehen:

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) 
Verwandte Themen