【问题标题】:How to update entities in a namespace in Datastore如何更新数据存储区命名空间中的实体
【发布时间】:2019-09-17 11:37:13
【问题描述】:

我有一个名为“items”的命名空间,其中包含一堆属性。一种属性称为“incidentLocation”,一种称为“incidentState”。

对于“incidentLocation”为空的任何地方,我想将“incidentState”的值复制到它上面。然后,我想删除“incidentState”属性。

我正在为 Datastore 使用 python 客户端。如何检索和更新给定命名空间中的每个实体?

编辑: 我想出了如何检索实体

from google.cloud import datastore
client = datastore.Client(project="myproject")
query = client.query(kind='spots', namespace='items')

print(list(query.fetch(10)))

仍然不确定如何将每个实体更新回数据库

【问题讨论】:

    标签: python-3.x replace google-cloud-datastore gql


    【解决方案1】:

    GQL 不支持更新。 Cloud Datastore 不是关系数据库,而是文档数据库,因此您应该考虑整个文档,而不是列。在这种情况下,您似乎应该考虑在您的 items 种类上运行 Cloud Dataflow 作业以添加新的 incidentLocation 属性。

    要将您的实体写回您的数据库,您应该使用put。您应该考虑使用 batches 来减少您发送的 RPC 数量,这应该会给您带来更好的吞吐量。

    【讨论】:

    • 我现在正在使用python客户端,希望能拉取和更新数据库中的每个实体。但items 是一个命名空间,而不是一种。了解更多后,我想我会更新这个问题,使其更具体。
    • 感谢您更新问题。
    猜你喜欢
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    相关资源
    最近更新 更多