2012-07-09 12 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

여기에 일종의 문자열 대체를하려고하십니까? 실제로 작동하는 방식이 아닙니다. 아마도 %s 연산자를 사용 하시겠습니까?

어쨌든 GQL을 통해 쿼리하는 것을 왜 주장하는지 이해가되지 않습니다. 그 키를 사용하여 객체를 얻을 수있는 방법은 get와 직접입니다 :

contract = db.get(contract_key) 

키 ID를 :

contract = Contract.get_by_id(id) 
+0

감사합니다, @Daniel가, 난 단지 생각 지금은 완전히에 (이전의 조언을 이해 데이터 저장소 객체를 키로 가져 오는 방법). 정말 고마워! – craftApprentice

1

은 어쩌면 이것은 당신이 찾고있는 해답이 아니라 당신이 시도 할 수 :

'$[contract_key]' 무엇 예정이다
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)