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

Flask表单提交失败无法写入SQL数据库,代码问题排查求助

代码问题排查与修复方案

HTML代码问题

  • 表单提交方式错误:当前method="GET","POST"写法不符合规范,文件上传必须使用POST请求,修改为method="POST"即可
  • 文件字段名不匹配:文件上传input的name属性为Photo,但Python代码中取文件时用的是request.files['file'],两边名称完全不对应,要么将input的name改为file,要么将Python取文件的逻辑改为request.files['Photo']
  • 模板变量缺失:首次访问首页时/路由没有给模板传递filename参数,直接加载img标签会触发变量不存在报错,建议在模板中加判断,只有filename不为空时才渲染图片标签
  • JS资源加载错误:script标签错误使用了href属性,应该替换为src,否则JS文件无法正常加载

Python代码问题

  • 数据库写入字段取值错误:代码中尝试从表单data['Photo']取值,但Photo是文件字段不在表单文本数据里,你要存入数据库的应该是已经保存好的文件名filename,将sql执行的参数改为(data['Name'], data['Address'], filename)即可
  • 多余的错误打印语句:print(data['file'])完全错误,file是文件字段不在form数据里,运行会触发KeyError,直接删除该行即可
  • 重复定义secret_key:代码中先后两次定义app.secret_key,虽然不直接触发报错,但会导致配置冲突,删除后面重复的app.secret_key = "secret key"即可
  • 缺少异常捕获逻辑:建议给数据库操作加try-except包裹,出现执行错误时回滚事务并打印错误信息,方便后续排查问题:
try:
    dbcursor.execute("INSERT INTO webproject(name,Address,Photo) VALUES(%s,%s,%s)",(data['Name'],data['Address'],filename,))
    db.commit()
except Exception as e:
    print(e)
    db.rollback()
    flash('数据写入失败')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:45:01