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

Flask中HTML仅展示SQLite最后一条记录而非全表数据问题求助

问题原因
  • 核心错误是循环缩进逻辑错误:原代码中遍历字段的for x in row和遍历行的for row in cur是平级关系,只有当遍历完全部行、row变量最终存储表最后一条记录后,才会执行字段遍历逻辑,前面生成的所有<tr>标签都没有对应<td>内容,最终仅能渲染最后一行数据。
  • 次要问题:数据库查询逻辑写在Flask应用初始化阶段,仅服务启动时执行一次查询,后续数据库更新不会同步到页面;同时全局声明SQLite连接存在线程安全隐患。
  • HTML结构缺失:原代码没有拼接</table>闭合标签,属于不合法的HTML结构。
修复方案

调整后的可运行代码如下:

import sqlite3
from flask import Flask
app = Flask(__name__)

@app.route('/')
def main():
    # 将数据库操作移到路由内部,每次请求重新查询最新数据
    connection = sqlite3.connect('employee.db')
    cur = connection.cursor()
    cur.execute('SELECT * FROM employee;')
    s = "<table style='border:2px solid black'>"
    # 修正缩进:字段遍历放在行遍历内部
    for row in cur:
        s += "<tr>"
        for x in row:
            s += "<td>" + str(x) + "</td>"
        s += "</tr>"
    # 补全table闭合标签
    s += "</table>"
    cur.close()
    connection.close()
    return "<html><body>" + s + "</body></html>"

if __name__ == "__main__":
    app.run()

如果需要更规范的实现,还可以改用Flask的render_template模板能力渲染HTML,不要在Python代码中硬拼接HTML字符串,后续维护更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:45:00