2011-03-31 71 views
1

在谷歌應用程序引擎中,我每分鐘存儲一次傳感器數據。因此,24小時內共有1440個個人閱讀。這意味着我對所有查詢的最大限制爲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 2011-03-31 10:28:27

+0

嗯......好的,在開發控制檯中,數據存儲視圖僅顯示1000的結果1 - 10。在此線程和之前的線程之間,我認爲這仍然保持不變。給我的結果添加一個計數器我發現你是對的。謝謝。 – drinck 2011-03-31 15:47:01

回答

0

您可以使用遊標獲取所有結果:

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將包含所有結果以限制可變大小(32MB)的。

+0

謝謝。這有助於我對光標的理解。我確實從systempuntoout發現1000限制已被刪除。 – drinck 2011-03-31 15:48:08

+0

可變尺寸沒有限制。 – 2011-03-31 23:28:08

0

你也可以用gql做這樣的事情。

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