【问题标题】:Python Appengine timeframe on datastore request数据存储请求的 Python Appengine 时间范围
【发布时间】:2013-06-02 09:48:47
【问题描述】:

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

【问题讨论】:

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


    【解决方案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)
    

    【讨论】:

    • 感谢您的回复;效果很好!我正在研究 ndb,但我还没有决定是否要更改它(我在其他页面中有很多代码,我必须重新配置才能使用它)
    • @user2370602 从长远来看仍然值得...有些事情在那里做的不同,但好消息是您不会丢失任何数据..您可以简单地切换到ndb 并继续与您当前的数据一样..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多