Flask-SQLALchemy对表中数据按时间进行统计

表结构如下:

class Status(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    submit_time = db.Column(db.DateTime, default=datetime.now())

Status表接受用户的提交,现在想对用户的提交情况按时间进行统计。例如过去24小时,每小时的提交次数;过去12个月,每个月的提交次数。

请教采用Flask-SQLALchemy该如何写这样的查询?

阅读 14.3k
1 个回答
from datetime import datetime, timedelta

NOW = datetime.utcnow()
last_24h_submits_count = []
for h in xrange(1,25):
    count = session.query(Status).filter(Status.submit_time.between(NOW - timedelta(seconds=h*3600-1), NOW - timedelta(hours=h-1))).count()
    last_24h_submits_count.append(count)

完整示例见 https://gist.github.com/yinian1992/6044294

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进