2012-07-09 77 views
0

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() 

感谢所有帮助

回答

6

什么是'$[contract_key]'咋办是吗?你想在这里做一些字符串替换吗?这实际上不是它的工作原理。也许你的意思是使用%s运算符?

无论如何,我不明白为什么你坚持通过GQL进行查询。其键搞定的对象的方式直接与get

contract = db.get(contract_key) 

和密钥ID:

contract = Contract.get_by_id(id) 
+0

谢谢,@Daniel,我想只有现在我完全理解你以前的建议(上如何通过密钥获取数据存储对象)。真的感谢! – craftApprentice 2012-07-09 15:47:27

1

也许这是不是你正在寻找的答案,但你可以试试这个:

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)