2013-06-02 17 views
0

我正在一個網站上有一個圖形,但是,我不想加載整個圖形,我只想加載一個小時間範圍(例如:1小時或第1天)Python Appengine數據存儲請求的時間框架

這是我在曲線數據DbModel之後:

class storage(db.Model): 
    feedid = db.StringProperty() 
    data = db.StringProperty() 
    date = db.DateTimeProperty(auto_now_add=True) 

目前,以圖表中的數據,運行此: (feedid只是選擇要加載的圖形)

d = storage.all() 
d.filter("feedid =", feedid) 
d.order('date') 
    for p in d.run(): 
    #Use the data to make a graph 

那麼,如何改變這種情況,只需要一定的時間範圍而不是整個數據集呢?

我對Appengine很陌生,所以這可能是一個簡單的問題,但是要感謝任何試圖幫助的人。

回答

1

您可以使用下面的查詢:

import datetime 
d = storage.all() 
d.filter('feedid =', feedid) 
d.filter('date >=', datetime.datetime(2013, 6, 1)) 
d.filter('date <=', datetime.datetime(2013, 6, 30)) 
d.order('date') 

這將使你的所有storage在六月的日期,2013年

注意:如果你是剛剛開始使用App Engine,我會強烈建議使用ndb而不是db。它具有許多優點,例如自動緩存。在ndb中的上述查詢看起來像:

import datetime 
q = storage.query() 
q = q.filter(storage.feedid == feedid) 
q = q.filter(storage.date >= datetime.datetime(2013, 6, 1)) 
q = q.filter(storage.date <= datetime.datetime(2013, 6, 30)) 
q = q.order(storage.date) 
+0

謝謝你的迴應;這很好用!我正在研究ndb,但我還沒有決定是否要改變(我在其他頁面中有很多代碼,我必須重新配置才能使用它) – Joseph

+0

@ user2370602還是值得的從長遠來看......有些事情在不同的地方有所不同,但好消息是你不會丟失任何數據......你可以簡單地切換到「ndb」並繼續使用當前的數據。 – Lipis