【问题标题】:Querying the Google App Engine Datastrore查询 Google App Engine 数据存储
【发布时间】:2013-05-17 22:53:45
【问题描述】:

我正在尝试学习如何使用 Google App Engine,我正在查看他们的数据存储示例以查询 here 我从未做过 SQL、GQL 等。那么有人可以分解这个字符串并解释每个部分在做什么吗?

# GqlQuery interface constructs a query using a GQL query string
q = db.GqlQuery("SELECT * FROM Person " +
                "WHERE last_name = :1 AND height <= :2 " +
                "ORDER BY height DESC",
                "Smith", max_height)

【问题讨论】:

  • 不要学习 GQL。毫无意义。使用 ndb 接口。

标签: python google-app-engine google-cloud-datastore gql gqlquery


【解决方案1】:

查询的结果赋值给“q”

db.GqlQuery是db类中的gqlquery方法

"SELECT * FROM Person " + 表示从模型 Person 中选择所有内容

"WHERE last_name = :1 AND height

"ORDER BY height DESC",按字段高度降序排列

"Smith", max_height) 变量 1 和 2

q = db.GqlQuery("SELECT * FROM Person " +
     "WHERE last_name = :1 AND height <= :2 " +
     "ORDER BY height DESC",
     "Smith", max_height)

【讨论】:

    【解决方案2】:

    正如之前有人评论的那样,如果您不是来自 SQL 背景(即便如此我认为这是一个错误),您应该考虑使用 GQL。与模型和查询对象相比,使用 GQL 并没有真正的好处,许多人来到 appengine 表时,基于 SQL 的先入为主的想法来了解 appengine 应该如何工作,他们必须忘记这些想法。

    使用模型执行相同的查询

    q = Person.all().filter("last_name = ","Smith").filter("height <= ",max_height).order("-height")
    

    正如其他人所提到的,如果您刚刚开始,您应该认真考虑切换到ndb,除非您已经使用基于db 的预先存在的代码体

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 2015-12-05
      • 2015-04-19
      • 1970-01-01
      • 2014-10-31
      • 2012-09-07
      • 2011-08-16
      相关资源
      最近更新 更多