0

Mit einer App in Python arbeiten, die über die Google App-Engine bereitgestellt wird.Update erstellt eine neue Entität, anstatt die aktuelle im Google Datastore zu aktualisieren

Hier ist der Code, den ich verwendet habe, um das Update zu tun.

key = ndb.Key('User', uid) 
     user = key.get() 
     if not user: 
      logging.info("Creating new user...") 
      user = M.User(id=uid) 
     user.remind = tmp 
     user.put() 

Anstatt die alte Entität zu aktualisieren, wird eine neue Entität mit dem Schlüssel als a im Namensfeld erstellt. Wie unten gesehen Namen/ID classNo erstellt first_name groupid last_name Benutzernamen aktualisiert ReMIND

id = 133.877.436 2016.08.13 0 (15: 16: 04.890) HKT JIACHENNN null wahre 2016.8.13 (15: 19: 49,055) HKT

name = 133877436 -1 2016.08.13 (15: 19: 52,590) HKT null null null wahr 2016.08.13 (15: 19: 52,590) HKT null

jede Hilfe dankbar!

UPDATE/GELÖST

gelöst durch die Verwendung von Int (uid), wenn die Einheit das Abrufen. Es wurde eine mew-Entity erstellt, da die zwei Schlüssel unterschiedlich waren. Eins war 133877436 und wurde in Anführungszeichen eingeschlossen "133877436" daher wurde Name genannt.

Hope this jemand anderes

hilft
+0

Sie zeigen nicht, wie dieser Code aufgerufen wird, aber 'id = ist 133866436' ein langer,' name = 133866436' ein String ist, so sind die Tasten unterschiedlich. Wenn die Schlüssel unterschiedlich sind, sind die Entitäten unterschiedlich. – tx802

+1

@jiachen: Sie sollten eine Antwort auf Ihre Frage mit der Lösung hinzufügen - um die Frage nicht als unbeantwortet zu lassen. –

Antwort

0

wenn Sie möchten, eine Entität aktualisieren Sie sollten diese Einheit durch seine ID abzurufen, dann können Sie den alten Wert ändern. Für exemple:

entity_to_edit = Entity.get_by_id(this_entit_id) 
entity_to_edit.some_attribute = "new_variable" 
entity_to_edit.put() 
Verwandte Themen