2012-05-03 4 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은 다음과 같습니다

난 대신 id=1의 게시물의 세부 사항을 얻는
<div class="post"> 
    <h3 class="post-subject">{{ my_post.subject }}</h3> 
    <div class="post-content">{{ my_post.content }}</div> 
</div 

빈 페이지가 나타납니다. 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