You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python/Flask新手问题:如何格式化SQLite数据库取出的积分值为整数显示?

实现Points字段整数展示的三种可选方案

两种处理位置(查询时/渲染前)都可以实现需求,你可以根据自己的业务场景选择:

方案1:SQL查询阶段直接转换(推荐全场景用整数的情况)

直接在查询语句中用SQLite自带的CAST函数将浮点型的Points字段转为整数,无需修改后续任何代码:
修改app.py中index路由的查询语句即可:

@app.route('/')
def index():
    conn = get_db_connection()
    # 仅修改这一行的查询语句,用CAST转换字段类型
    rows = conn.execute('SELECT Name, CAST(Points AS INTEGER) AS Points, Active FROM playerslist').fetchall()
    conn.close()
    return render_template('index.html', rows=rows) 

优势是从数据查询层统一解决类型问题,后续所有用到该查询结果的地方拿到的都是整数格式,不需要重复处理。

方案2:后端渲染前转换(推荐不同页面需要不同格式的情况)

如果你只需要在当前路由的返回结果中用整数,其他接口还是需要保留浮点格式,可以在拿到查询结果后、传入模板前做字段转换:

@app.route('/')
def index():
    conn = get_db_connection()
    rows = conn.execute('SELECT * FROM playerslist').fetchall()
    conn.close()
    # 处理每行的Points字段
    processed_rows = []
    for row in rows:
        row_dict = dict(row)
        row_dict['Points'] = int(row_dict['Points'])
        processed_rows.append(row_dict)
    return render_template('index.html', rows=processed_rows) 

方案3:Jinja2模板渲染阶段转换(推荐仅当前页面需要整数展示的情况)

如果你不需要修改后端代码,只需要在当前页面展示时去掉.0后缀,直接修改模板代码即可,用Jinja2自带的int过滤器做转换:
修改index.html中Points字段的渲染代码:

<span class="badge badge-primary">{{ row['Points']|int }}</span>

这个方案改动最小,只需要改一行代码,适合仅前端展示需要整数、后端逻辑不需要修改的场景。


额外优化建议:如果你的Points字段业务上本身就是整数,也可以修改你之前pandas导入Excel的脚本,将导入SQLite时的Points字段类型指定为INTEGER,从根源上避免浮点存储的问题。

内容的提问来源于stack exchange,提问作者fk1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:24:00