Python数据存储区请求的Appengine时间范围

时间:2013-06-02 09:48:47

标签: google-app-engine python-2.7 google-cloud-datastore

我正在开发一个有图表的网站,但是,我不想加载整个图表,我只想加载一个小的时间范围(例如: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很新,所以这可能是一个简单的问题,但感谢任何试图提供帮助的人。

1 个答案:

答案 0 :(得分: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)