此数据存储为什么通过键返回无查询?
问题描述:
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)
谢谢,@Daniel,我想只有现在我完全理解你以前的建议(上如何通过密钥获取数据存储对象)。真的感谢! – craftApprentice 2012-07-09 15:47:27