AttributeError:'GqlQuery'对象没有属性'Key'

时间:2013-03-22 21:09:17

标签: python google-app-engine python-2.7 jinja2

如何检索和显示从GQL查询返回的多个结果的键?

main.py

class MainPage(webapp2.RequestHandler):
    def get(self):          

        author = "William Shakespeare"

        q = db.GqlQuery("SELECT * FROM Book " +
                        "WHERE author = :1 ", author)
        keys = q.Key

        template_values = { 
            'author': author,
            'key': key,         
        }       

        template = jinja_environment.get_template('index.html')
        self.response.out.write(template.render(template_values))

更新1:

当我使用

keys = q.key()

我收到此错误:

  

文件“C:\ programming_google_app_engine_repo \ datastore \ main.py”,行   17,在得到       key = q.key()AttributeError:'GqlQuery'对象没有属性'key'

1 个答案:

答案 0 :(得分:2)

您的代码存在多个问题。请退后一步,考虑一下您想要做什么,并再次浏览文档。

问题1
GqlQuery的结果没有密钥。您需要使用.get().fetch(1)来访问Book对象。

q = db.GqlQuery("SELECT * FROM Book WHERE author = :1 ", author)
my_book = q.get()

问题2
要获得method的值,您需要记住包括parens /括号。

my_book_key = my_book.key() # don't forget the parens/brackets

template_values = { 
    'author': author,
    'key': my_book_key,         
}