0
class MyEntity(db.Model): 
    timestamp = db.DateTimeProperty() 
    title = db.StringProperty() 
    number = db.FloatProperty() 

db.GqlQuery("SELECT * FROM MyEntity WHERE title = 'mystring' AND timestamp >= date('2012-01-01') AND timestamp <= date('2012-12-31') ORDER BY timestamp DESC").fetch(1000) 

이렇게하면 앱 엔진에서 ~ 600 개의 항목을 가져와야합니다. 내 dev에 서버에서 그것은 예상대로 작동합니다, index.yaml 빌드, 그것을 업로드, 서버에서 테스트하지만 아무것도 반환하지 않는 응용 프로그램 엔진에.GQL 쿼리가 StringProperty 쿼리 결과를 반환하지 않음

Index: 
- kind: MyEntity 
    properties: 
    - name: title 
    - name: timestamp 
    direction: desc 

데이터 저장소 뷰어에서 쿼리를 분할하여 문제가있는 위치와 타임 스탬프 제약 조건이 예상대로 작동하는지 확인해보십시오. 쿼리는 WHERE title = 'mystring'에서 여러 항목을 반환해야하는 경우 아무 것도 반환하지 않습니다.

속성과 연산자 사이에 공백이있는 .filter("prop =",propValue)을 호출해야했던 까다로운 필터링을 모호하게 기억하지만 GqlQuery이므로 GQL을 사용하여 해당 형식을 시도했습니다.

누구든지 내 문제를 알고 계십니까?

내가 생각할 수있는 한 가지 : 내 devserver & 업로드시 새 색인을 만들기 전에 BulkLoader.py를 통해 MyEntity 엔터티 목록을 응용 프로그램에 추가했습니다. 차이가 있니?

답변

0

bug in the bulkloader supplied with App Engine SDK이 약간 있습니다. 기본적으로 자동 생성 된 구성은 문자열을 db.Text으로 변환합니다.이 필드는 색인을 생성하려는 경우 좋지 않습니다. 올바른 import_transform 지침은 다음과 같아야합니다

transform.none_if_empty(str) 

이것은 db.StringProperty()으로 인덱스에 업로드 된 필드를 앱 엔진을 지시합니다.

0

마지막으로 작성한 행이 문제 일 수 있습니다.

실제 실제 데이터 저장소의 엔티티에 쿼리에 필요한 인덱스가 없습니다.

내가 알고있는 한, 새로운 인덱스를 추가 할 때 App Engine은 인덱스를 다시 작성해야합니다. 이 작업에는 다소 시간이 걸릴 수 있습니다. 관리자 페이지를 확인하여 색인 상태를 확인하고 색인이 아직 작성 중인지 확인할 수 있습니다.

관련 문제