2011-03-31 6 views
1

구글 앱 엔진에서는 센서 데이터를 1 분 간격으로 저장하고 있습니다. 따라서 24 시간 동안 총 1,440 건의 독서가 가능합니다. 즉, 모든 쿼리에 대해 최대 1,000 개의 결과 제한에 대해 부딪 히고 있음을 의미합니다.App Engine. 격일마다 쿼리하기

누군가 1,440 개의 모든 수치를 순차적으로 읽는 방법을 보여줄 수 없다면, 지금 당장이라도 괜찮습니다. 720 개의 독서 또는 다른 모든 시간을 조회하고 싶습니다.

판독 값은 예 : DateTime 개체로 저장됩니다. 2011-03-24 02:01:00.

이 쿼리를 작성하는 가장 좋은 방법은 무엇입니까?

내가 사용하던 :

day_start = datetime(2011, 03, 24) 
day_end = day_start + timedelta(days=1) 
readings = models.Log.all() 
readings.filter('dateTime >=', day_start) 
readings.filter('dateTime <', day_end) 

어떻게에만 쿼리마다 다른 분으로 변경 것인가?

+2

최대 한도 인 1000이 한 달 전에 제거되었음을 알고 계십니까? – systempuntoout

+0

아 ... 좋습니다. 개발 콘솔에서 Datastore보기는 1000의 결과 1 - 10 만 보여줍니다.이 스레드와 이전 스레드 사이에서 나는 여전히 이것을 가정했습니다. 내 결과에 카운터를 추가하면 나는 당신이 옳다는 것을 알 수 있습니다. 감사. – drinck

답변

0

당신은 커서를 사용하여 모든 결과를 가져올 수 : 가변 크기 (32메가바이트)의 한계까지

q = parse.YourModel.gql(YourQuery) 
    tlist = [] 
    tl = q.fetch(1000) 
    cursor = q.cursor() 
    while len(tl) > 0: 
     tlist.extend(tl) 
     q = parse.YourModel.gql(YourQuery) 
     q.with_cursor(cursor) 
     tl = q.fetch(1000) 
     cursor = q.cursor() 

tlist이 모든 결과가 포함됩니다.

+0

감사합니다. 커서를 이해하는 데 도움이됩니다. systempuntoout에서 1000 제한이 제거되었음을 알았습니다. – drinck

+0

가변 크기에는 제한이 없습니다. –

0

gql을 사용하여 다음과 같이 할 수도 있습니다.

models.Log.gql("WHERE dateTime >= :1 AND dateTime < :2", day_start,day_end)