【问题标题】:gcloud python: how to construct query with OR conditiongcloud python:如何使用 OR 条件构造查询
【发布时间】:2016-01-31 17:48:38
【问题描述】:

似乎没有办法用 OR 条件构造查询。有没有人遇到过这个问题或知道什么时候会完成或任何解决方法。

我想用 OR 实现这样的目标:

query = datastore.query(kind='Article',
                         filters=[('url', '=', 'url1'),
                                  ('url', '=', 'url2')]
                       )

但是这个过滤器的作用是 AND 而不是 OR。

【问题讨论】:

    标签: google-app-engine google-cloud-platform google-cloud-datastore gcloud-python google-cloud-python


    【解决方案1】:

    OR 不是 Google Cloud Datastore 中支持的查询构造。

    目前实现这一点的方法是在客户端构造多个查询并组合结果集。

    作为参考,您应该通读Datastore Queries 文档:

    Datastore 目前仅支持使用 AND 运算符组合过滤器。但是,通过发出多个查询并组合结果来创建自己的 OR 查询相对简单:

    【讨论】:

      【解决方案2】:

      Python 运行时支持"IN" query filter

      但是请注意,这只是为了方便:在后台,“IN”查询被转换为一系列独立的查询,每个查询都在列表中查找一个值。

      【讨论】:

      • 我在 gcloud python 库中看不到“IN”。如果 gcloud doc 确实存在,你能指出我吗?
      • 对不起,我可能不够清楚,我正在尝试使用与一般 python 数据存储实现不同的 gcloud python 库。 googlecloudplatform.github.io/gcloud-python/stable/…
      • 我会说支持 AND 但不支持 OR 的原因是 大多数 数据存储区查询是索引扫描,因此 AND 查询是custom 索引,而OR 查询可以通过对简单索引的多次查询(扫描)来实现。正如@AndreiVolgin 所说,IN 是语法糖。
      猜你喜欢
      • 1970-01-01
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      相关资源
      最近更新 更多