我一直在尝试运行此查询:
my_post = db.GqlQuery("SELECT * FROM Post where __key__ = KEY('Post', 1)")
self.render("showpost.html", my_post = my_post)
我的模板showpost.html
如下所示:
<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是否实际返回了某些内容。有办法检查吗?
尝试以下内容时:
my_post = db.GqlQuery("SELECT * FROM Post where subject = 'hello_world')
self.render("showpost.html", my_post = my_post)
我得到同样的问题(空白页),即使有帖子的主题是hello_world
非常感谢
答案 0 :(得分:2)
GqlQuery
is a class。
您的代码已创建GqlQuery
类的实例
要从数据存储区返回内容,您需要使用以下任一实例方法:
.fetch() # requires number of entities as first argument
.get()
示例:
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)
答案 1 :(得分:2)
Bernie是正确的,您需要使用.fetch
或.get
来实际检索您创建的GqlQuery的结果,但对于第一个版本,您有密钥或ID,根本不想创建查询。而是使用直接使用它们提供的方法。
如果您有身份证,请使用:
my_post = Post.get_by_id(id)
这比使用查询对象要快得多。
如果您有完整的密钥,请使用:
my_post = Post.get(key)
这是将实体从数据库中取出的最快,最有效的方法。