为什么这个数据存储区通过密钥返回None查询?

时间:2012-07-09 13:30:30

标签: python google-app-engine datastore gql

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

'$[contract_key]'应该是什么?你想在这里做某种字符串替换吗?这真的不是它的工作原理。也许你的意思是使用%s运算符?

在任何情况下,我都不明白为什么你坚持通过GQL进行查询。通过密钥获取对象的方法是直接使用get

contract = db.get(contract_key)

和密钥ID:

contract = Contract.get_by_id(id)

答案 1 :(得分: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)