Python中SQLAlchemy往MySQL存入日期字符串'2019/07/01'时,为什么总是出现警告Warning: (1292, "Truncated incorrect DOUBLE value: '2019/07/01'")?
date_str = datetime.utcnow().strftime('%Y/%m/%d')
可以存,但是总是被警告:
Warning: (1292, "Truncated incorrect DOUBLE value: '2019/07/01'") cursor.execute(statement, parameters)
Python中SQLAlchemy往MySQL存入日期字符串'2019/07/01'时,为什么总是出现警告Warning: (1292, "Truncated incorrect DOUBLE value: '2019/07/01'")?
4 回复
大家不用回答,楼主自己搜索
1292, "Truncated incorrect DOUBLE value:
这个警告是因为SQLAlchemy尝试将字符串'2019/07/01'直接作为数值(DOUBLE)处理,而不是日期。根本原因是你的模型字段定义为了Numeric或Float类型,而不是Date或DateTime类型。
检查你的模型定义,应该是类似这样:
from sqlalchemy import Column, Date
from sqlalchemy.dialects.mysql import DATE
class YourModel(Base):
__tablename__ = 'your_table'
# 错误:使用Numeric或Float类型
# date_column = Column(Numeric)
# 正确:使用Date类型
date_column = Column(Date)
# 或者明确使用MySQL的DATE类型
# date_column = Column(DATE)
如果你确实需要存储日期字符串,确保:
- 数据库表字段是
DATE类型 - 模型字段定义为
Date或DateTime类型 - 传入的是Python的
date对象或能被解析的日期字符串
正确示例:
from datetime import date
# 方法1:使用date对象
obj.date_column = date(2019, 7, 1)
# 方法2:使用字符串(SQLAlchemy会自动转换)
obj.date_column = '2019-07-01' # 注意:要用YYYY-MM-DD格式
总结:把模型字段类型从Numeric改成Date。
看见这个我就想笑了。

