标签: gqlquery

在GQL中计算结果的最佳方法是什么?

我认为计算的一种方法是这样的:

foo = db.GqlQuery("SELECT * FROM bar WHERE baz = 'baz')
my_count = foo.count()
Run Code Online (Sandbox Code Playgroud)

我不喜欢的是我的数量将限制在1000以上,我的查询可能会很慢.那里的人有解决方法吗?我有一个想法,但它感觉不干净.如果只有GQL有一个真正的COUNT函数......

google-app-engine gql gqlquery

29
推荐指数
3
解决办法
2万
查看次数

如何在GQL中查询过去6小时(日期时间)内的所有条目?

我在Google App Engine中有一个带有日期字段的简单表格.我想查询所有行,其中包含从现在到6小时之前的日期字段.我该如何形成这个查询?

google-app-engine gql gqlquery

14
推荐指数
2
解决办法
7202
查看次数

对StringProperty的gql查询中的where insensitive where子句

使用google appengine数据存储区,有没有办法执行gql查询,在不区分大小写的StringProperty数据类型上指定WHERE子句?我并不总是确定该值的大小写.文档指定where对我的值区分大小写,有没有办法使这个不敏感?

例如db模型将是这样的:

from google.appengine.ext import db
class Product(db.Model):
    id = db.IntegerProperty()
    category = db.StringProperty()
Run Code Online (Sandbox Code Playgroud)

数据看起来像这样:

id         category
===================
1          cat1
2          cat2
3          Cat1
4          CAT1
5          CAT3
6          Cat4
7          CaT1
8          CAT5
Run Code Online (Sandbox Code Playgroud)

我想说

gqlstring = "WHERE category = '{0}'".format('cat1')
returnvalue = Product.gql(gqlstring)
Run Code Online (Sandbox Code Playgroud)

returnvalue包含

id         category
===================
1          cat1
3          Cat1
4          CAT1
7          CaT1
Run Code Online (Sandbox Code Playgroud)

google-app-engine gql gqlquery

12
推荐指数
2
解决办法
3948
查看次数

如何在Google App Engine中实现互联网高分

我想为我的游戏实现互联网高分.并向他们所拥有的玩家提供反馈(不仅仅是top100或类似的东西).在普通的SQL中,它看起来像这样:

SELECT COUNT(*)FROM得分WHERE points>:newUsersPoints

和GQL有类似的东西

db.GqlQuery("SELECT*FROM Score WHERE points>:1",newUsersPoints).count()

但由于count()仅限于1000,因此在我的情况下它不会非常有用.您对如何实现这一点有任何想法吗?

我有两个

第一:

  1. 使用分片计数器的想法(http://code.google.com/intl/pl/appengine/articles/sharding_counters.html)创建新的"表格",用于存储某些范围内的分数(from_points,to_points)

  2. 汇总上表中range.to_points <newUsersPoints的所有计数器

  3. 在新分数为db.GqlQuery("SELECT*FROM Score WHERE points>:1 AND points> =:2 AND points <:3",newUsersPoints,range.from_points,range)的范围内查找分数大于分数的分数. to_points).count()+ sumfrom2

  4. 查找新分数所在的范围并增加其计数器

  5. 计数器的分割范围大于1000(或999),因此3.不会达到限制

  6. 在分数表中添加新分数

这是非常复杂和容易出错的.在添加分数之前,我们可能会增加一些范围和超时.(不是交易)

第二个想法:

有时候(每天一次?)按分数对所有分数进行排序并给它们新的位置(脚本可能超时,所以我们必须以块的形式进行)

要找出我们刚刚在哪个地方获得新分数

db.GqlQuery("SELECT*FROM Score WHERE points>:1 LIMIT 1",newUsersPoints).get().precalculated_position + 1

还有其他想法吗?

google-app-engine gql gqlquery

10
推荐指数
2
解决办法
1702
查看次数

适用于实体子级的Google App Engine查询(不过滤)

查询中是否有实体的子项?

鉴于:

class Factory(db.Model):
    """ Parent-kind """
    name = db.StringProperty()

class Product(db.Model):
    """ Child kind, use Product(parent=factory) to make """
    @property
    def factory(self):
        return self.parent()
    serial = db.IntegerProperty()
Run Code Online (Sandbox Code Playgroud)

假设有500家工厂生产了500种产品,总计250,000种产品.有没有办法形成一个资源有效的查询,只返回一个特定工厂生产的500个产品?祖先方法是一个过滤器,因此使用例如Product.all().ancestor(factory_1)将需要重复调​​用数据存储区.

google-app-engine gql gqlquery ancestor

6
推荐指数
1
解决办法
2875
查看次数

Google App Engine - 查询包含值的数组

我有一个GAE数据存储表,其中包含一个数组字段(包含几个字符串).我想基于包含特定字符串的所有数组字段来过滤此表.我怎样才能做到这一点 ?我没有在GQL中看到'包含'运算符,而'in'运算符则以相反的方式运行.我只需要遍历所有实体并自己进行检查吗?

(PS我在GAE工作中使用Python).

google-app-engine gql gqlquery google-cloud-datastore

6
推荐指数
1
解决办法
1458
查看次数

GQL是否支持常用的SQL样式聚合?

我正在寻找在SQL版本中广泛使用的简单聚合函数.

简单的事情Select Count(*) from table1比较复杂.

如果这些可用,是否有一些文件可以指向我?

谢谢 - 吉吉

google-app-engine gql aggregate-functions gqlquery

6
推荐指数
1
解决办法
2454
查看次数

App Engine的过滤器与gql方法

我的系统中有一个用户创建了一个我想要检索的实体.我试图使用过滤器这样做,因为它应该比调用gql方法更快.但是,过滤器不返回任何结果,并且gql有效.

randy_res = Vote.all().filter('created_by=', randy).fetch(limit=10)
randy_res = Vote.gql('WHERE created_by=:1', randy)
Run Code Online (Sandbox Code Playgroud)

是否有任何理由为什么过滤器将返回一个空列表,并且gql调用将返回正确的结果?

google-app-engine gql filter gqlquery

5
推荐指数
1
解决办法
2077
查看次数

如何构造GQL以不包含集合中的值?

是否可以从谷歌应用引擎数据库中选择db.Model对象的键不在给定列表中?如果是这样,语法是什么?

模型类的例外:

class Spam(db.Model):
    field1 = db.BooleanProperty(default=false)
    field2 = db.IntegerProperty()
Run Code Online (Sandbox Code Playgroud)

我想要工作但无法弄清楚的查询示例:

spam_results = db.GqlQuery(
"SELECT * FROM Spam WHERE key NOT IN :1 LIMIT 10", 
['ag1waWNreXByZXNlbnRzchMLEgxBbm5vdW5jZW1lbnQYjAEM', 
 'ag1waWNreXByZXNlbnRzchMLEgxBbm5vdW5jZW1lbnQYjgEM'])

for eggs in spam_results:
  print "id: %s" % a.key().id()
Run Code Online (Sandbox Code Playgroud)

python google-app-engine gql gqlquery

3
推荐指数
1
解决办法
813
查看次数

零结果在Query/GqlQuery中

我怎么知道我的查询结果是使用Query接口还是GqlQuery接口返回零结果?使用.get()零结果会产生错误吗?如果是的话,处理它的最佳方法是什么?

python google-app-engine gql gqlquery queryinterface

2
推荐指数
1
解决办法
929
查看次数

在 Playground 中使用 GQL 查询的 AST 节点无效

我可以在 GQL Playground 中执行这个精确的查询并返回数据。在调试期间,我可以在将查询字符串传递给 gql 之前立即捕获它。

我将无法共享架构

查询是

query {
      vessels{
        vessel {
          mmsi
          imo
          name
          shipType
         }
    }
 }
Run Code Online (Sandbox Code Playgroud)

错误

Invalid AST Node: '\n    query {\n          vessels{\n            vessel {\n              mmsi\n              imo\n              name\n              shipType\n             }\n        }\n     }\n\n    '
Run Code Online (Sandbox Code Playgroud)

我已经尝试了各种调试来找出如何解决这个问题,但没有成功

python gql gqlquery python-3.x

2
推荐指数
1
解决办法
1757
查看次数

带有变量的GAE gqlquery

如果我想运行一个带有变量的GqlQuery我已经设置了可能吗?

例如:

myNumber = 4

myResult = db.GqlQuery("SELECT * from myData WHERE filter = myNumber")
Run Code Online (Sandbox Code Playgroud)

这导致:

解析错误:符号处的无效WHERE条件

我这样做错了吗?谢谢你的时间.

google-app-engine gqlquery

1
推荐指数
1
解决办法
1809
查看次数

Google Cloud Datastore:如何查询所有不同的Parent/Ancestor?

我有一个名为Datastore Kind Order,它有一个祖先/父级User.

我想使用GQL查询订单的所有不同祖先(用户),但以下查询不起作用.

SELECT DISTINCT User FROM Order

查询的响应是:

没有实体匹配此查询.

确保您要搜索的属性有简单索引或复合索引.学到更多

由于父母也是关键的一部分,我也尝试过:

SELECT DISTINCT __key__ FROM Order

但错误回复说:

GQL查询错误:属性:key不支持分组依据

gql gqlquery google-cloud-datastore google-cloud-platform google-query-language

1
推荐指数
1
解决办法
982
查看次数