首页 > 解决方案 > 从 Python 中的 SQL 数据库绘图

问题描述

我想使用 python 和烧瓶绘制数据。该图表示上个月每天的客户数量。该脚本用于每天进行一次查询,cpu 使用率过高。

clients_this_month = [len(set([t.client_id for t in
        Transaction.query.filter(and_(extract('day', Transaction.date) == day,
            and_(extract('month', Transaction.date) == current_month,
                extract('year', Transaction.date) == current_year))).filter(Transaction.type.like('Pay%')).filter_by(is_reverted=False).all()])) for day in range(1, 32)]

我想提高该查询的性能。所以我让脚本只执行一个 mysql 查询,它将查询速度提高了 30。

query = Transaction.query.filter(and_(extract('month', Transaction.date) == current_month,
                extract('year', Transaction.date) == current_year)).filter(Transaction.type.like('Pay%')).filter_by(is_reverted=False).all()
    clients_this_month = [0 for i in range(1,32)]
    for transaction in query:
        clients_this_month[transaction.date.day - 1] += 1

然而结果并不是我所期望的。在这里,我有每天的交易数量,而不是当天的客户数量。我不知道如何在不在 sql 中时通过 client_id 过滤事务。

标签: pythonflasksqlalchemy

解决方案


推荐阅读