【问题标题】:Is it possible to query multiple datastore keys in single query?是否可以在单个查询中查询多个数据存储键?
【发布时间】:2014-04-15 11:43:10
【问题描述】:

我在文档中找不到这个。我正在单个 AppEngine 请求中检查数据存储区中是否存在多个键。是否可以在单个查询中执行此操作,因为这比发送多个 get_by_id 请求更有效?

【问题讨论】:

  • 您可以使用:db.get(list_of_keys) 和在 NDB 中:ndb.get_multi(list_of_keys)
  • 谢谢。这两者之间的行为有什么区别吗?我可以用 get_multi 做 keys_only 吗(只检查项目是否存在)?
  • NDB 有很多好处,比如缓存。 keys_only 查询选项返回键。但是,如果您使用提供的键进行查询,为什么还要进行 key_only 查询呢?你有钥匙。
  • 但是如果仅测试存在是否有意义,您可以尝试。但我不明白你试图完成什么。
  • 好吧,我正在使用自定义字符串键,对于一组字符串,将检查哪些存在哪些不存在(每次都会有很多,所以我需要一个最佳方法)。我会试试看,谢谢你的清理!

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


【解决方案1】:

您可以使用 Google Cloud Datastore 的查找方法创建 RPC 请求以通过键获取实体:

request = datastore.LookupRequest()
request.key.extend(list_of_keys)
response = datastore.lookup(request)

或者更快:

list_of_entities = ndb.get_multi(list_of_keys)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多