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

如何将Python时间对象插入MySQL的time类型列?

MySQL TIME类型的Python插入方案

嘿,这个问题我之前做项目的时候刚好踩过坑,给你说下最靠谱的解决方案~

核心结论

对应MySQL的TIME类型,Python里用datetime.time对象是最规范、最不容易出错的选择,它能完美匹配MySQL的TIME类型映射,还能避免手动拼接字符串带来的格式问题和SQL注入风险。

具体实现步骤&代码示例

  1. 导入依赖:除了MySQLdb,还要用Python标准库的datetime模块来创建合法的时间对象
  2. 构造时间对象:用datetime.time()生成你需要的时间值,支持时、分、秒、微秒参数
  3. 参数化执行SQL:用%s作为占位符(MySQLdb的标准占位符格式),把time对象作为参数传入,绝对不要直接拼接SQL字符串!
import MySQLdb
from datetime import time

# 替换成你的数据库连接信息
db_conn = MySQLdb.connect(
    host="localhost",
    user="your_username",
    passwd="your_password",
    db="your_database"
)
cursor = db_conn.cursor()

# 比如要插入16:25:30这个时间
insert_time = time(16, 25, 30)

# 参数化插入语句,time_column是你表中的TIME类型列名
sql = "INSERT INTO your_table (time_column) VALUES (%s)"

try:
    # 注意参数要放在元组里,哪怕只有一个参数也要加逗号
    cursor.execute(sql, (insert_time,))
    db_conn.commit()
    print("插入成功!")
except Exception as e:
    db_conn.rollback()
    print(f"插入失败:{str(e)}")
finally:
    cursor.close()
    db_conn.close()

额外注意点

  • 如果非要用字符串插入,必须严格遵守MySQL TIME的格式:HH:MM:SS或者带微秒的HH:MM:SS.ffffff(比如"16:25:30.123456"),但这种方式不推荐——容易写错格式,还存在SQL注入风险。
  • 当你从数据库查询TIME类型字段时,MySQLdb会自动把它转换成datetime.time对象返回,所以插入和查询的类型是统一的,用起来很顺手。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:32:31