如何使用Flask/SqlAlchemy/SQLite对过去7天的每一天的数据库记录进行分组?



我想从数据库中获取用户的日志,我们用它来记录通话记录并计算他们每天输入的日志数量。这样我就可以使用图表做一些漂亮的图表.js

返回过去 7 天并获取每天单个用户的日志计数的方法是什么?

该表看起来像这样(简化(:

class Log(db.Model):
__tablename__ = 'log'
id = db.Column(db.Integer, primary_key=True)
logType = db.Column(db.String(100), nullable=False)
title = db.Column(db.String(100), nullable=False)
date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
content = db.Column(db.Text, nullable=False)
org_id = db.Column(db.Integer, db.ForeignKey('org.id'), nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

我想编译获取此类数据:

mon:12
tue:2
wed:8
thu:15
fri:13
sat:12
sun:11

我完全不知道该怎么做。

谢谢一吨..

对于SQLite,你可以试试这个,它给你工作日(0-6(和结果的数量:

import datetime
from sqlalchemy import func

result = db.session.query(func.strftime('%w', Log.date_posted).cast(db.Integer).label('weekday'), func.count(Log.date_posted).label('count'))
.filter(Log.date_posted > datetime.date.today() - datetime.timedelta(days=6))
.group_by(func.DATE(Log.date_posted)).order_by('weekday').all()
for weekday, count in result:
print(weekday, count)

此代码适用于将来的任何人。 请注意末尾的分组依据/提取。

result = Log.query.with_entities(Log.date_posted, func.count(Log.date_posted)) 
.filter(Log.user_id == "2") 
.filter(Log.date_posted >= now - timedelta(days=6)) 
.group_by(extract('day', Log.date_posted)).all()

最新更新