首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试GQL查询

调试GQL查询
EN

Stack Overflow用户
提问于 2012-05-03 23:24:08
回答 2查看 248关注 0票数 0

我一直在尝试运行以下查询:

代码语言:javascript
复制
my_post = db.GqlQuery("SELECT * FROM Post where __key__ = KEY('Post', 1)")
self.render("showpost.html", my_post = my_post)

我的模板showpost.html看起来像这样:

代码语言:javascript
复制
<div class="post">
  <h3 class="post-subject">{{ my_post.subject }}</h3>
  <div class="post-content">{{ my_post.content }}</div>
</div

我得到的不是id=1帖子的详细信息,而是一个空白页面。虽然有一个关于id=1的帖子,但我不确定如何确认GQLquery是否真的返回了什么。有没有办法检查一下?在尝试以下操作时:

代码语言:javascript
复制
my_post = db.GqlQuery("SELECT * FROM Post where subject = 'hello_world')
self.render("showpost.html", my_post = my_post)

我得到了相同的问题(空白页),即使有帖子谁的主题是hello_world

非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-03 23:30:20

GqlQuery is a class

您的代码已经创建了GqlQuery类的一个实例。

要从数据存储区返回某些内容,您需要使用以下任一实例方法:

代码语言:javascript
复制
.fetch() # requires number of entities as first argument
.get()

示例:

代码语言:javascript
复制
my_query = db.GqlQuery("SELECT * FROM Post WHERE subject = :subject", 
                       subject="hello_world")
my_post = my_query.get() # the magic happens here
self.render("showpost.html", my_post = my_post)
票数 2
EN

Stack Overflow用户

发布于 2012-05-04 01:17:57

Bernie是正确的,因为您需要使用.fetch.get从您创建的GqlQuery中实际检索结果,但是对于第一个版本,您有一个键或id,您根本不想创建一个查询。相反,应该使用为直接使用它们而提供的方法。

如果你有一个id,使用:

代码语言:javascript
复制
my_post = Post.get_by_id(id)

这将比使用查询对象快得多。

如果您有一个完整的密钥,请使用:

代码语言:javascript
复制
my_post = Post.get(key)

这是从数据库中取出实体的最快、最有效的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10434459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档