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

使用Python SQL连接库更新表时datetime对象引发语法错误

解决MySQL DateTime字段更新语法错误问题

问题根源

从错误日志UTC_time=''2021-11-20 21:28:40''可以看出,DateTime值被包裹了两层单引号,这是导致MySQL语法错误的直接原因:手动将datetime对象转为字符串后,参数化查询又自动为字符串添加了一层单引号,造成格式非法。

解决方案

方案1:直接传入datetime对象(推荐)

Python的MySQL连接库(如mysql-connector-python)支持直接将datetime.datetime对象作为参数传入,库会自动处理为MySQL可识别的DateTime格式,无需手动转字符串,彻底避免引号嵌套问题。

示例代码:

import datetime

# 直接使用datetime对象,无需转字符串
t = datetime.datetime(2021, 11, 20, 21, 28, 40)
update_stmt = "UPDATE raw_tokenomics_data SET UTC_time=%s WHERE raw_tknomics_data_ID=1"
cursor.execute(update_stmt, (t,))
connection.commit()

方案2:修正字符串传递方式(备选)

如果必须传递字符串,确保参数化查询不会重复添加引号。检查MySQL连接库配置,确认占位符%s的使用符合库要求(mysql-connector-python默认用%s)。同时,手动构造字符串时不要额外添加单引号,让参数化查询自动处理:

import datetime

t = datetime.datetime(2021, 11, 20, 21, 28, 40)
tt = t.strftime('%Y-%m-%d %H:%M:%S')
update_stmt = "UPDATE raw_tokenomics_data SET UTC_time=%s WHERE raw_tknomics_data_ID=1"
# 确保参数是元组形式,不要手动加引号
cursor.execute(update_stmt, (tt,))
connection.commit()

注:此方案不如方案1稳定,不同数据库的DateTime字符串格式可能有差异,直接传datetime对象兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:45:33