2010-01-04 2 views

답변

103

당신에게 : 세부 사항에 name=_1

뷰어에서

에게, 첫 번째 열 (ID/이름) 표시, 그것은이 쿼리가 작동하지 않습니다

Decoded entity key: Programme: name=_1 
Entity key: agtzcG9................... 

로 키를 보여줍니다보기 엔티티의 키를 사용하여 검색 할 수 있습니다.

SELECT * FROM Programme where __key__ = KEY('agtzcG9...................') 

그리고 검색 할 수 있어야합니다. 비슷하게 이름을 사용 :

SELECT * FROM Programme where __key__ = KEY(Programme, '_1') 

이것은 당신이 AppEngine 응용 프로그램에서하고 싶은 것이 아닙니다. Nick이 그의 코멘트에서 언급했듯이, 그것은 거대한 시간 낭비입니다. 이 예는 관리 콘솔에서 키로 검색어를 찾는 방법을 보여주는 데 유용합니다.

+4

아아, 아니. 이것은 _huge_ 시간과 자원 낭비입니다. –

+4

@ 닉 :하지만 관리 콘솔에는 더 좋은 방법이 없을 것입니다. – Thilo

+0

죄송합니다, 실수. :/ –

18

키를 사용하여 엔티티를 가져 오지 않고도 쿼리 할 수 ​​있습니다. 단순히 키를 사용하여 엔티티를 가져올 수 있습니다. 파이썬에서는 MyModel.get_by_key_name('_1')으로이 작업을 수행 할 수 있습니다. 이것은 Adam이 제안한 쿼리 사용보다 3 ~ 5 배 빠릅니다. 숫자 ID에 대한

+5

그것은 내 제안이 아니 었어, 닉, 나는 그의 쿼리 작업을 돕기 위해 노력했다. 나는 그가 관리 콘솔 데이터 뷰어에서 사물을 보려고한다고 생각한다. –

+0

@ Nick + Adam : 예, 관리 콘솔에서 일부 데이터를 검토하려고했습니다. – Thilo

+1

레코드의 경우,'__key__' 쿼리는 실제로 일반적으로 엔티티 테이블 자체에서 직접 읽습니다. 직접적으로 인덱스 대신 엔티티 테이블을 먼저 읽습니다. 실제로 데이터 저장소가이 쿼리를 원시 bigtable 조회 나 스캔으로 컴파일 할 때'__key__ =='쿼리와'get()'사이에는 큰 차이가 없습니다. 물론 이것은 구현 세부 사항입니다. 하나의 엔티티를 찾을 때마다'get()'을 사용하는 것은 여전히 ​​좋은 습관이다. – ryan

20

쿼리별로 이름과 유사한 형태로 작동 :

SELECT * from Programme where __key__ = KEY('Programme', 1234567) 

내가 관리 콘솔에서 특히 유용이 양식을 발견했다.

2

키를 사용하여 쿼리 할 때 ID 또는 이름뿐만 아니라 부모를 포함하여 키를 정확히 일치시켜야합니다. 물론 위의 예에서와 같이 부모가 null 인 경우 ID 또는 이름과 엔터티 유형만으로 충분합니다.

당신은 이미 인코딩 된 엔티티 키가있는 경우, 당신은 사용할 수 같은 :

위의 간단한 예를 들어
SELECT * FROM Programme where __key__ = KEY('agtzcG9...................') 

,

SELECT * FROM Programme where __key__ = KEY('Programme', '_1') 

할 것입니다,하지만 당신의 키는 부모가있는 경우 ,

Paren: id=123 

처럼 그런 다음 쿼리는 것

SELECT * FROM Programme where __key__ = KEY('Paren', 123, 'Programme', '_1') 

부모에게 부모가있는 경우 추가해야합니다. 자세한 내용은 official GQL documentation을 참조하십시오.

부모와 관계없이 동일한 ID 또는 이름을 가진 모든 것을 선택하는 방법이없는 것처럼 보입니다.

1

KEY의 모든 args를 따옴표로 묶을 때 호출이 실패합니다 (관리 콘솔에서 오류 팝업이 표시됨).

SELECT * FROM mytype WHERE __key__ = KEY('mytype', '12345') 

하지만이 작업을 수행합니다 :

예를 들어, ID/이름 12345와 유형 "MYTYPE"에 대한,이 하지를 작동합니까

SELECT * FROM mytype WHERE __key__ = KEY(mytype, 12345) 
관련 문제