gpt4 book ai didi

google-cloud-datastore - 删除 Google Cloud Datastore 中的祖先树

转载 作者:行者123 更新时间:2023-12-01 09:56:24 25 4
gpt4 key购买 nike

如何通过 Google Cloud Datastore 中的 API(Python Protocol Buffer )删除整个祖先树?

例如,如果我将实体存储在此结构中:祖父/父/子,我如何删除祖父,并在这样做时删除该“节点”的所有子代和孙代?

如果我对祖 parent 的键提交删除请求,祖 parent 实体将被删除,但其子孙实体仍然存在,并且它们的路径仍然是祖 parent / parent / child ,即使祖 parent 实体已被删除。

最佳答案

删除父实体不会删除任何子实体。但是,您可以使用祖先查询来查找所有子实体的键并将它们作为单个事务的一部分删除。步骤是:

  • 开始交易。
  • 运行 keys-only kindless ancestor查询父实体的键。
  • 将 #2 返回的每个键添加到要删除的键列表中。
  • 提交交易。

  • 这是部分代码片段:
    # Create a transactional RunQueryRequest.
    req = datastore.RunQueryRequest()
    req.read_options.transaction = txn # From previous BeginTransactionRequest.

    query = req.query

    # Add an ancestor filter.
    key_filter = query.filter.property_filter
    key_filter.property.name = '__key__'
    key_filter.operator = datastore.PropertyFilter.HAS_ANCESTOR
    path_element = key_filter.value.key_value.path_element.add()
    path_element.kind = 'ParentKind'
    path_element.name = 'parent-name'

    # Make it a keys-only query.
    query.projection.add().property.name = '__key__'

    batch = self.datastore.run_query(req)
    for entity_result in batch:
    # Add entity_result.entity.key to CommitRequest...

    关于google-cloud-datastore - 删除 Google Cloud Datastore 中的祖先树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25903556/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com