【问题标题】:updating an entity's property without retrieving the entity from the NDB在不从 NDB 检索实体的情况下更新实体的属性
【发布时间】:2014-04-01 22:22:37
【问题描述】:

我想更新具有很多属性的实体的属性。

如果我理解正确,每当我通过

从数据存储中检索实体时
entity = key_of_entity.get()

稍后更新它的属性

entity.some_property += 1
entity.put()

我需要为读取该实体的每个属性付费?由于该实体具有相当多的属性,因此一遍又一遍地读取可能会非常昂贵。有什么方法可以更新实体的属性而无需先对其进行读取?

【问题讨论】:

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


    【解决方案1】:

    唯一的解决方案是将这个实体分成两部分:很少更新和经常更新。您可以使它们完全独立(将一个实体的 id 作为另一个实体的属性),或者您可以将其中一个设为父级,另一个设为子级。

    【讨论】:

    • @dreamwalker 您也可以为 2 个不同的实体使用相同的密钥,使用一个来读取数据,另一个用于写入或最适合您的方式。
    • 是的,对不起那个安德烈。当我可以控制 id 并且不需要自动生成的时候,我大部分时间都使用这种方法。
    • 我不确定这是否是混淆的一部分,但我的理解是@Jimmy 的想法是具有相同的键名但有两种不同的类型(因此键仍然是唯一的)。
    • @PatrickCostello 是的......正确。混淆来自 ndb 的 key_name 等。我们三个都在说同样的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多