sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(MySQLdb.IntegrityError) (1062, "Duplicate entry '****' for key 'PRIMARY'")
flask中的主键重复判断问题
出现该状况的条件
本次的主键是日期和某字段的联合主键,使用了db.session.merge,判定上应该是不会报主键重复的,此时我遇到两种情况会报这个错:
1、
date = db.Column(db.DateTime, default=datetime.utcnow)
此处的date应该有产生了默认值为今天的日期
2、
datetime.today()
此处直接使用了今日的datetime,提交到数据库时会自动修改为日期格式
解决
flask sqlalchemy在提交到数据库时,还是会用原来的值提交,然后再用默认值或者你的值进行覆盖,所以必须手动指定默认日期