2012-05-03 96 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