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