You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3向MySQL插入数据时遇Date列数据截断警告的求助

解决MySQL插入日期时的1265数据截断警告

嘿,我来帮你搞定这个烦人的警告!这个1265错误的核心原因很明确:MySQL的DATE类型字段只认YYYY-MM-DD格式的日期字符串,但你现在生成的datestr是MM/DD/YYYY(比如09/25/2024),这种格式数据库没法正确解析,就会触发数据截断的警告。

快速修复方案

你不用再手动拼接日期字符串了,datetime模块自带了更靠谱的方法:

方法1:用isoformat()直接生成标准格式

datetime.date对象的isoformat()方法会直接返回YYYY-MM-DD格式的字符串,一步到位:

from datetime import datetime

today = datetime.date.today()
datestr = today.isoformat()  # 输出类似 "2024-09-25"

方法2:用strftime()自定义格式化

如果你想更直观地控制格式,用strftime()指定%Y-%m-%d即可:

from datetime import datetime

today = datetime.date.today()
datestr = today.strftime("%Y-%m-%d")  # 同样输出 "2024-09-25"

完整优化后的代码示例

顺便给你补全插入操作的代码,记得用参数化查询(更安全,还能避免格式问题):

from datetime import datetime
import pymysql

today = datetime.date.today()
datestr = today.isoformat()

connection = pymysql.connect(host='localhost', user='root', password='', db='testdb')
try:
    with connection.cursor() as cursor:
        # 用%s作为占位符,参数化插入(替换成你的表名和字段名)
        sql = "INSERT INTO your_table (name, numberone, numbertwo, numberthree, Date) VALUES (%s, %s, %s, %s, %s)"
        for item in resp['result']:
            data = (item['name'], item['numberone'], item['numbertwo'], item['numberthree'], datestr)
            cursor.execute(sql, data)
    connection.commit()
finally:
    connection.close()

额外检查建议

  • 确认你的数据库表中Date列的类型确实是DATE(不是VARCHAR或其他类型),DATE类型会自动验证日期格式,更适合存储日期数据。
  • 尽量避免手动拼接日期字符串,容易出错,用datetime模块的内置方法更可靠。

内容的提问来源于stack exchange,提问作者Sudhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:42:12