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

标签 python sqlite sqlalchemy flask-sqlalchemy

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

关于python - 如何使用 Flask/SqlAlchemy/SQLite 对过去 7 天的每一天的数据库记录进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57886785/

相关文章:

python - tf.image.decode_jpeg() 返回零矩阵

iphone - SQLite 的删除和写入,使用 JSON 数据同步 MySQL 中的远程表

java - 使用 jOOQ 创建带主键的表

python - SQLAlchemy,PostgreSQL : Query for rows with a specific item in an array

python - 如何在 Tkinter 中调整根窗口的大小?

python - 根据条件删除列表的元素

java - 尝试从 JFrame 获取数据并将其插入到 SQLite 中。连接有效,但插入仅插入空行。为什么?

python - 在 Flask-SQLAlchemy session 之外保存到数据库

python - 在 sqlalchemy 中向 s 选择添加空列

python - 在python中递归收集字符串 block