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
相关产品推荐
相关产品推荐

