记录第一次创建时间: default
最近发现程序中凡存在默认时间的部分,经常出现多条记录create_time时间一致的情况,而实际上创建时间明明差的很多
一番debug之后发现坑在这里:
falsk中如下两个字段
1 | create_time1 = db.Column(db.DateTime, default=datetime.now) |
两者的区别:
第一个插入的是期望的, 数据的插入时间,每条数据插入时可自动根据当前时间生成
第二条是一个固定的时间, 程序部署的时间,所有的数据都是这个固定时间
实际上默认值在mysql数据库没有体现, 都是sqlalchemy在插入数据时加的
如果想想在生成的table中有默认值使用: server_default
1 | name = db.Column(db.String(45), server_default='hh') |
当我们要给布尔值类型指定server_default时,需要用到text
1 | from sqlalchemy import text |
因为mysql的datetime类型的数据不支持函数, 所以没法指定默认值位当前时间
记录每次修改的时间: onupdate
1 | update_time = db.Column(db.DateTime, default=datetime.now,onupdate=datetime.now) |