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

Flask API无法写入容器化PostgreSQL及代码报错问题

问题解决方案

针对第一个报错:TypeError: __init__() got an unexpected keyword argument 'filename'

这个错误是因为你实例化数据库模型时,传入了模型构造函数未定义的filename参数。

解决步骤:

  • 核对模型类的__init__方法定义,确认它的参数列表(比如应该是owner_name、owner_age、pet_name、pet_age、pic这类),不要额外传递filename。
  • 处理文件上传时,只需把文件内容或存储路径赋值给模型的pic字段,而非将filename作为构造参数传入。

针对第二个报错:TypeError: __init__() missing 4 required positional arguments: 'owner_age', 'pet_name', 'pet_age', and 'pic'

这个错误是实例化模型时未传够构造函数要求的必选参数。

解决步骤:

  • 检查HTML表单的字段name属性,确保和后端接收的参数名完全一致(比如表单中年龄字段的name要对应owner_age)。
  • 若暂时注释文件上传逻辑,需给模型的pic字段设置默认值(如空字符串),或实例化时显式传入默认值pic=""。
  • 确认后端获取表单参数的代码正确,比如用request.form.get("owner_age")获取对应值,且无参数遗漏。

通用排查要点

  • 打印表单提交的所有参数(print(request.form)、print(request.files)),验证后端是否正确接收所有字段值。
  • 检查数据库模型的__init__方法,确保传入参数和定义的参数列表完全匹配,无多传、少传。
  • 确认容器化PostgreSQL已正常启动,后端数据库连接字符串(主机、端口、用户名、密码、库名)和容器配置一致。
  • 数据库写入操作后,必须调用db.session.commit()提交事务,否则数据不会保存到数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:15:41