使用SQLAlchemy与SQLite时,db.Time类型支持存储哪些格式的数据?
db.Time 类型支持的存储格式
- 该类型对应SQL标准的
TIME时刻类型,设计初衷是存储单日的时间点,支持的合法取值范围为00:00:00~23:59:59.999999 - 写入时可以直接传入Python的
datetime.time对象,也可以传入符合HH:MM:SS格式的字符串,SQLAlchemy会自动完成类型转换 - 注意该类型不适合存储时长数据:最多只能存储小于24小时的时长,超出1天的时长会直接触发类型错误,且用时刻类型存储时长语义混淆,后续维护极易出现理解偏差。
时长存储的推荐方案
针对你需要存储学习时长的场景,推荐两种更合理的实现方式:
- 整数存储(最简易)
以固定单位(比如分钟、秒)用db.Integer存储数值,例如10分钟直接存整数10,后续需要展示时再自行格式化为可读性更高的字符串即可,读写、统计计算都没有额外适配成本。
示例代码:# 单位设置为分钟,按需调整即可 duration = db.Column(db.Integer, nullable=False, comment="学习时长,单位:分钟") - 原生间隔类型(语义最清晰)
SQLAlchemy提供了专门用于存储时间间隔的db.Interval类型,支持直接传入Python的datetime.timedelta对象写入,SQLite底层会自动转为微秒级整数存储,读取时自动转回timedelta对象,不需要自行做单位转换。
示例代码:from datetime import timedelta # 模型字段定义 duration = db.Column(db.Interval, nullable=False, comment="学习时长") # 写入10分钟时长示例 new_record = YourModel(duration=timedelta(minutes=10)) db.session.add(new_record) db.session.commit()
内容的提问来源于stack exchange,提问作者user7329024
相关产品推荐
相关产品推荐

