Flask+SQLAlchemy提交数据到MySQL时报tuple类型无法转换错误如何解决
问题原因
报错根源是Project实体类的自定义构造方法存在语法笔误:
在给start_date、end_date两个属性赋值的语句末尾多写了英文逗号。Python语法中,变量赋值时末尾加逗号会默认将值封装为一元元组,比如a = date(2021,11,8), 实际得到的a是(date(2021,11,8),),而非预期的日期对象。
SQLAlchemy将数据写入MySQL时,发现这两个字段存储的是元组类型,MySQL驱动无法识别转换该类型,因此抛出对应报错。
解决方法
两种方案二选一即可:
- 修正
Project类的构造方法,删掉赋值语句末尾多余的逗号,修正后的代码如下:
def __init__(self, title, client, work_week, start_date, end_date, description): self.title = title self.client = client self.work_week = work_week self.start_date = start_date self.end_date = end_date self.description = description
- 直接删除自定义的
__init__方法:继承自SQLAlchemyBase类的模型默认会自动生成匹配字段的构造方法,不需要手动实现,删除后可以完全避免这类手写构造方法带来的笔误问题。
内容的提问来源于stack exchange,提问作者ChennoFly
相关产品推荐
相关产品推荐

