杀际汉折叠 编辑本段 概述
GQL 是一种类似于 SQL 的查询语言,适用于查询 App E项岩肉志换沉洋创ngine 数据库。有关 GQL 语造川早端谈写谈确粮委法和功能的完整讨论,请参阅 G来自QL 参考。
GqlQuery 构造构造函数采用以 SELECT * FROM model-name 开头的完整 GQL 语句作为参数。WHERE 子句中的值可以是字符串或数字字母,或可以使用值的参数绑定。绑定参数最初可以使用位置或关键字参数绑定到构造函数。
query =GqlQu360百科ery("SELECT * FROM Song WHERE composer 注= 'Lennon, John'")
query =GqlQuery("SELECT * FROM Song WHERE composer = :1","Lennon, John")
query =GqlQuery("SELECT * FROM Song WHERE composer = :完纪五composer",composer="Lennon, John")为了方便起见,Model 和 Expando 类有种可返回 GqlQuery 实例的 gql政持() 方法。这种方法在不使用 SELECT * FROM m镇odel-name 的情信过克倍乐右较否验慢需况下采用 GQL 查询字符串,这是暗含的。
尼露亮满很久query =Song.gql("WHERE composer = 'Lennon, John'")与使用 Query 类一样,应用程序通过体形语础么友防调用 fetch() 方法或通过将 GqlQuery 对象视为可迭代来执行查询和访问结果。操助曾稳山再护有关详细信息,请参阅 Query 文档。
Query 和 GqlQuery 访问结果的方式之间有一个不同之处:如果 GQL 查询包括一个 LIMIT 子句或一个 OFFSET 子句,将采用等效 fetch() 方法检索结果,即使迭代器接口用于访问结果也是如此。当某个 GqlQuery(其 GQL 包含 LIMIT 或 O短杀究孙军绝运据岁FFSET)被作为可迭代使用时,将对数据库进行一次调用以抓取所有结果,然后迭代器从内存返回每个结果。
forsong i老消降她持此且体得天nq:
printsong.title另请参阅 Query,一种使用对象和方法而不是 GQL 来准备查询的 Query 类。
注意:支持数据库查询的基于索引的数据结构和算法不支持某些种类的查询。有关详细信息,请参阅查询和索引:对查询的限制。
折叠 编辑本段 构造函数
GqlQuery 类的构造函数如下定义:
class GqlQuery(query_string, *args, **kwds)使用 App Engine 查询语言 GQL 的 Query 对象。
参数:
query_string以 SELECT 月菜审将* FROM model-name 开头的完整 GQL 语句。*args位置参数绑定。**kwds关键字参数绑定。
折叠 编辑本段 实例毛甚施论仍应几额好轻浓方法
GqlQuery 实例有以下方法:
bind(*args, **kwds)重新绑定参数以进行查询。新查询将在重新绑定参数后第一次访问结果时执行。
重复使用带有新参数严权待庆众额及价财的 GqlQuery 对象比构建新的 GqlQuery 对象更快,因为重新绑定不需要再次解析查询字符串。
参数:
*args新位置参数绑定。**kwds新关键字参打形别依队又山李色务又数绑定。get()执行查询,然后返回第一个结果,或如果查询没有返回结果探殖紧则返回 None。
get() 暗含 [limit] 为 1,并覆几具回氢笑盖 GQL 查询的 LIMIT 子句(如果有)。最多从数据库中抓取 1 个结果。
fetch(limit, offset=0)执行查询,然后返回结果。
limit 和 offset 参数控制从数据库抓取的结果数量,以及通过 fetch() 方法返回的结果数量:
数据库会抓取 offset + limit 个结果到应用程序。数据库本身不会跳过前 offset 个结果。
fetch() 方法则会跳过前 offset 个结果,然后返回剩余结果(limit 个结果)。
该查询具有与 offset 加 limit 数量之和成线性对应关系的性能特征。
注意:fet优难足蒸个氢ch() 返回最多 1000 个结果。如果有超过 1000 个实体与查询相匹配,且并未指定任何限制或使用了大于 1000 的限制,高落密则 fetch() 仅返回前 1000 个结果。
参数:
limit要返回的结果的数量。该值覆盖 CQL 查询语句中的 LIMIT 子句(如果有)。如果没有足够的符合条件的可用结果,则可能被返回少于 limit 的结果。
limit 是必需参数。当结果数未知时,可迭代地使用 G多刑儿精穿红服镇混qlQuery 对象而不是使用 fetch() 方法从查询获取每个结果。
offset要跳过的结果的数量。该值覆盖 CQL 查询语句中的 OFFSET 子句或 LIMIT 子句中的偏移(如果有)。返回值是一个 Model 实微者管四着茶京革洋先例列表,可能是一个空列表。
count(limit)余取独守雷每质必贵返回该查询抓取的结果的数量。
count啊愿界继歌同田湖马() 比通过常量系数检索所有数据要快一些,但是运行时间仍随结果集大小而增加。如果预期的数八极刻夜的量很少,或指定了一个 limit,那么,最好只使用 count()。
注意:count() 返回的最大值为 1000。如果与查询条件相匹配的实体的实际数量超出了最大值,count() 会只返回 1000 个结果。
参数:
limit要计数的结果的最大数量。该值覆盖 C改析层冷源病视城已QL 查询语句中的 LIMIT 且真吃宣率式子句(如果有)。