【问题标题】: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)
【问题讨论】:
标签:
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 的预先存在的代码体