Flask项目中如何将SQL查询的平均值仅以数字形式显示在HTML中?
解决方案
问题出在SQL查询未给计算结果指定别名,导致返回的字典键是完整的CAST(AVG(hours) AS int)表达式,模板渲染时输出了整个键值对。按以下两步修改即可:
1. 修改Python中的SQL查询语句
给计算列添加别名(比如avg_hours),让返回结果的键更清晰:
avg_hours = db.execute("SELECT CAST(AVG(hours) AS int) AS avg_hours FROM pain WHERE user_id = ?", user_id)
2. 修改HTML模板渲染逻辑
直接通过别名获取对应数值,无需输出整个字典:
方式一:直接取单条结果(推荐,因为AVG返回单个值)
<h4>Average Hours: {{ avg_hours[0].avg_hours }}</h4>
方式二:保留循环(适用于可能返回多条结果的场景)
{% for row in avg_hours %} <h4>Average Hours: {{ row.avg_hours }}</h4> {% endfor %}
额外优化:处理空值情况
如果用户没有对应数据,AVG会返回NULL,可以添加默认值避免页面显示空值:
<h4>Average Hours: {{ avg_hours[0].avg_hours or 0 }}</h4>
内容的提问来源于stack exchange,提问作者Chenelle
相关产品推荐
相关产品推荐

