1)当我执行此查询时:
contract_record = Contract(book_number = 42, initial_page = 420, final_page = 442)
contract_record.put()
contract_key = contract_record.key()
contract = db.GqlQuery("SELECT * FROM Contract WHERE __key__ = KEY('Contract', '$[contract_key]')").get()
结果为"无"。为什么?
2) 如何使这个查询不是通过密钥,而是通过key_id?(大概是这样的:
contract_id = contract_record.key().id()
contract = db.GqlQuery("SELECT * FROM Contract WHERE __key__ = KEY('Contract', '$[contract_id]')").get()
谢谢你的帮助!
'$[contract_key]'
应该是什么?你想在这里做某种字符串替换吗?事实并非如此。也许你的意思是使用%s
运算符?
无论如何,我真的不明白你为什么坚持通过GQL进行查询。通过密钥获取对象的方法是直接使用get
:
contract = db.get(contract_key)
对于密钥ID:
contract = Contract.get_by_id(id)
也许这不是你想要的答案,但你可以试试这个:
contract_record = Contract(book_number = 42, initial_page = 420, final_page = 442)
contract_record.put()
contract_key = contract_record.key()
contract = db.get(contract_key)