标签: gql

适用于实体子级的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
查看次数

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

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

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

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

谢谢 - 吉吉

google-app-engine gql aggregate-functions gqlquery

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

Google app engine如何从datestore计算SUM?

我想知道,我如何从数据存储区(python)获得评级实体的总和?

我是不是该:

ratingsum = 0
for rating in ratings:
    ratingsum + rating

print ratingsum
Run Code Online (Sandbox Code Playgroud)

python google-app-engine gql

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

使用AppEngine(python)上的IN查询最小化子查询

是否有任何聪明的方法可以避免在以下情况下使用IN子句进行代价高昂的查询?

我正在使用Google App Engine构建Facebook应用程序,并且在某些时候我(显然)需要查询数据存储区以获取属于给定用户的任何facebook朋友的所有实体.

假设我有几个实体建模:

class Thing(db.Model):
    owner = db.ReferenceProperty(reference_class=User, required=True)
    owner_id = db.StringProperty(required=True)
    ...
Run Code Online (Sandbox Code Playgroud)

class User(db.Model):
    id = db.StringProperty(required=True)
    ...
Run Code Online (Sandbox Code Playgroud)

在某些时候,我查询Facebook以获取给定用户的朋友列表,我需要执行以下查询

# get all Thing instances that belong to friends
query = Thing.all()
query.filter('owner_id IN', friend_ids)
Run Code Online (Sandbox Code Playgroud)

如果我这样做,AppEngine将为每个id执行子查询friend_ids,可能超过任何查询可以生成的子查询的最大数量(30).

有没有更好的方法来做到这一点(即最小化查询数量)?我知道使用数据存储区没有任何关系和连接,但是,特别是,如果它有助于使事情变得更容易,我会考虑向UserThing类添加新字段.

python google-app-engine gql gquery google-cloud-datastore

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

将字符串变量传递给gql查询

我怎么在世界上用python将字符串变量传递给GQL?我可以在SQL中做得很好,但它只是不起作用.这就是我所拥有的:

personalposts = db.GqlQuery("select * from PersonalPost where user_id = %s order by created desc limit 30" % user_id)
Run Code Online (Sandbox Code Playgroud)

这一直在杀我,但我觉得应该很简单.

谢谢!

python google-app-engine gql google-cloud-datastore

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

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

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

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

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

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

谷歌云数据存储中的 HAS ANCESTOR 和 HAS DESCENDANT 子句

我正在研究Google Cloud Datastore GQL 语法- 特别是HAS ANCESTORHAS DESCENDANT比较运算符。

给出以下Person实体:

  • 艾米
  • 弗雷德,家长 = 艾米
  • 劳拉,家长 = 艾米
  • 保罗
  • 艾格尼丝...

下面的 GQL 查询会产生相同的输出吗?

SELECT * FROM Person WHERE key_name='Fred' HAS ANCESTOR KEY('Person', 'Amy')

SELECT * FROM Person WHERE KEY('Person', 'Amy') HAS DESCENDANT key_name='Fred'
Run Code Online (Sandbox Code Playgroud)

如果是这样,我不明白 HAS DESCENDANT 子句的存在。

提前致谢!

gql google-cloud-datastore

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

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 查询

我有一个名为 Account 的实体类型。其中一个字段是名为 的字符串selfie,它基本上是用户上传的自拍照的 URL。我想为有自拍的用户获取(因此,如果用户没有自拍,则不应将其包含在结果集中)。我有以下查询。但它不起作用,因为我有"NULL"一个字符串。这样做的正确方法是什么?同样,我只想要有自拍的用户。

Filter selfie = new FilterPredicate("selfie", FilterOperator.GREATER_THAN, "NULL");
Query query = new Query(Account.class.getSimpleName()).setFilter(selfie);
FetchOptions options = FetchOptions.Builder.withLimit(30);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
QueryResultList<Entity> entities = datastore.prepare(query).asQueryResultList(options);
Run Code Online (Sandbox Code Playgroud)

此外,我对在 App-Engine 上执行此操作的 JDO/JPA 方式持开放态度(但它必须适用于 App-Engine)。

java google-app-engine gql google-cloud-datastore

5
推荐指数
2
解决办法
4536
查看次数

Cloud Datastore“喜欢”查询

我在 Google Cloud Datastore 中有一个实体。属性之一是字符串数组。例如:

属性:技能

实体 1:
值:["mysql","sqlserver","postgresql","sqllite","sql-server-2008","sql"]

实体 2:
值:["css","css3"]

现在,我需要查询那些包含数组元素的实体css*

在典型的 SQL 中,它将是select * from kindName where skills like 'css%'

我尝试过select * from kindName where skills = 'css',效果很好,但是如何获取具有css*与 SQL 查询类似的元素的实体?

或者

为此建立数据模型的最佳方法是什么?

google-app-engine gql google-cloud-datastore google-cloud-platform

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