博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GqlQuery 类
阅读量:2188 次
发布时间:2019-05-02

本文共 2262 字,大约阅读时间需要 7 分钟。

概述

GQL 是一种类似于 SQL 的查询语言,适用于查询 App Engine 数据库。有关 GQL 语法和功能的完整讨论,请参阅 GQL 参考。

GqlQuery 构造构造函数采用以 SELECT * FROM model-name 开头的完整 GQL 语句作为参数。WHERE 子句中的值可以是字符串或数字字母,或可以使用值的参数绑定。绑定参数最初可以使用位置或关键字参数绑定到构造函数。

query =GqlQuery("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 model-name 的情况下采用 GQL 查询字符串,这是暗含的。

query =Song.gql("WHERE composer = 'Lennon, John'")与使用 Query 类一样,应用程序通过调用 fetch() 方法或通过将 GqlQuery 对象视为可迭代来执行查询和访问结果。有关详细信息,请参阅 Query 文档。

Query 和 GqlQuery 访问结果的方式之间有一个不同之处:如果 GQL 查询包括一个 LIMIT 子句或一个 OFFSET 子句,将采用等效 fetch() 方法检索结果,即使迭代器接口用于访问结果也是如此。当某个 GqlQuery(其 GQL 包含 LIMIT 或 OFFSET)被作为可迭代使用时,将对数据库进行一次调用以抓取所有结果,然后迭代器从内存返回每个结果。

forsong inq:

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 数量之和成线性对应关系的性能特征。

注意:fetch() 返回最多 1000 个结果。如果有超过 1000 个实体与查询相匹配,且并未指定任何限制或使用了大于 1000 的限制,则 fetch() 仅返回前 1000 个结果。

参数:

limit要返回的结果的数量。该值覆盖 CQL 查询语句中的 LIMIT 子句(如果有)。如果没有足够的符合条件的可用结果,则可能被返回少于 limit 的结果。

limit 是必需参数。当结果数未知时,可迭代地使用 GqlQuery 对象而不是使用 fetch() 方法从查询获取每个结果。

offset要跳过的结果的数量。该值覆盖 CQL 查询语句中的 OFFSET 子句或 LIMIT 子句中的偏移(如果有)。返回值是一个 Model 实例列表,可能是一个空列表。

count(limit)返回该查询抓取的结果的数量。

count() 比通过常量系数检索所有数据要快一些,但是运行时间仍随结果集大小而增加。如果预期的数量很少,或指定了一个 limit,那么,最好只使用 count()。

注意:count() 返回的最大值为 1000。如果与查询条件相匹配的实体的实际数量超出了最大值,count() 会只返回 1000 个结果。

参数:

limit要计数的结果的最大数量。该值覆盖 CQL 查询语句中的 LIMIT 子句(如果有)。

转载地址:http://igwub.baihongyu.com/

你可能感兴趣的文章
Java并发指南3:并发三大问题与volatile关键字,CAS操作
查看>>
Java并发指南4:Java中的锁 Lock和synchronized
查看>>
Java并发指南5:JMM中的final关键字解析
查看>>
Java并发指南6:Java内存模型JMM总结
查看>>
Java并发指南7:JUC的核心类AQS详解
查看>>
Java并发指南8:AQS中的公平锁与非公平锁,Condtion
查看>>
Java网络编程和NIO详解6:Linux epoll实现原理详解
查看>>
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
查看>>
Java网络编程与NIO详解8:浅析mmap和Direct Buffer
查看>>
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>
深入理解JVM虚拟机3:垃圾回收器详解
查看>>
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机11:Java内存异常原理与实践
查看>>