2012-05-03 6 views
0
私はこのクエリを実行しようとしている

デバッグGQLクエリ

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

どうもありがとう

答えて

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) 
2

バーニーは、あなたが実際に取得するために.fetchまたは.getを使用する必要があるという点で、権利でありますあなたが作成したGqlQueryの結果ですが、キーやIDを持つ最初のバージョンでは、クエリをまったく作成したくありません。むしろ、それらを直接使用するために提供されている方法を使用してください。

あなたはIDを持っている場合は、使用:

my_post = Post.get_by_id(id) 

これは、クエリオブジェクトを使用するよりもはるかに高速になります。

あなたは全体のキー、使用している場合:

my_post = Post.get(key) 

データベースからエンティティを取得するための最速かつ最も効率的な方法です。

+0

このチップをありがとう。私は代わりにこれを使用します。どうもありがとう :) – Prakhar

関連する問題