Python 为什么按键查询的数据存储返回None?

Python 为什么按键查询的数据存储返回None?,python,google-app-engine,datastore,gql,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]')

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如何不是通过键而是通过键id进行查询? 大概是这样的:

contract_id = contract_record.key().id()
contract = db.GqlQuery("SELECT * FROM Contract WHERE __key__ = KEY('Contract', '$[contract_id]')").get()

谢谢你的帮助

也许这不是你想要的答案,但你可以试试这个:

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)
“$[contract_key]”应该是什么?你想在这里做一些字符串替换吗?事实并非如此。也许您想使用%s运算符

无论如何,我真的不明白为什么你坚持通过GQL进行查询。通过键获取对象的方法是直接使用get:

对于密钥ID:

contract = Contract.get_by_id(id)

谢谢,@Daniel,我想直到现在我才完全理解您之前关于如何通过密钥获取数据存储对象的建议。真的谢谢!
contract = Contract.get_by_id(id)