更新会创建一个新实体,而不是更新Google数据存储区中的当前实体

时间:2016-08-13 07:21:29

标签: python google-app-engine app-engine-ndb google-cloud-datastore

使用谷歌应用引擎部署的python中的应用程序。

以下是我用来进行更新的代码。

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()

不是更新旧实体,而是使用名称字段中的键创建新实体。如下所示 名称/ ID class没有创建first_name groupid last_name提醒更新的用户名

id = 133877436 0 2016-08-13(15:16:04.890)HKT JIACHENNN null tr​​ue 2016-08-13(15:19:49.055)HKT

name = 133877436 -1 2016-08-13(15:19:52.590)HKT null null null tr​​ue 2016-08-13(15:19:52.590)HKT null

感谢任何帮助!

UPDATE /解决

在获取实体时使用int(uid)解决它。它创造了一个新的实体,因为两个键是不同的。一个是133877436,并被引号为'133877436',因此名称被称为。

希望这有助于其他人

1 个答案:

答案 0 :(得分:0)

如果你想更新你应该通过他的id检索这个实体的实体,那么你可以改变旧值。例如:

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