0

我正在一个有图表的网站上工作,但是,我不想加载整个图表,我只想加载一个小的时间范围(例如:1 小时或 1 天)

这是我用于图形数据的 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 很陌生,所以这可能是一个简单的问题,但感谢任何试图提供帮助的人。

4

1 回答 1

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 年 6 月的日期。

注意:如果您刚开始使用 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)
于 2013-06-02T10:02:57.587 回答