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

Python列表插入MySQL数据库时出现错误,寻求解决方案

解决Python批量插入MySQL的错误问题

我来帮你分析下代码里的问题,然后给你修正后的版本:

原代码的核心问题

  • 数据库连接参数缺失:my.connect()没有传入必要的连接信息(比如主机地址、用户名、密码、要连接的数据库名),MySQL根本不知道要连接到哪里。
  • executemany用法错误:你把数据列表转成字符串后用%拼接进SQL,这完全搞错了executemany的用法。这个方法的第二个参数就是要批量插入的数据列表,不需要手动拼接SQL,这种错误写法还会导致语法错误,甚至存在SQL注入风险。
  • SQL语句不规范:没有指定要插入的列名,虽然如果表的列顺序和数据完全匹配也能运行,但指定列名能避免因表结构变化导致的错误,代码可读性也更强。

修正后的代码

import MySQLdb as my

# 1. 补充数据库连接参数,根据你的实际配置修改
db = my.connect(
    host='localhost',  # 数据库主机地址,通常是localhost
    user='your_username',  # 你的MySQL用户名
    passwd='your_password',  # 你的MySQL密码
    db='your_database_name'  # 要连接的数据库名称
)

cursor = db.cursor()

data = [ ('Jane','dffd','sdas','sdas'), ('Jane','dffd','sdas','sdas'), ('Jane','dffd','sdas','sdas') ]

# 2. 正确使用executemany:第一个参数是带占位符的SQL,第二个是数据列表
# 这里假设test表有4个列,比如name, col2, col3, col4,你需要替换成实际的列名
sql = 'INSERT INTO test (name, col2, col3, col4) VALUES (%s, %s, %s, %s)'
cursor.executemany(sql, data)

db.commit()
cursor.close()  # 最好也关闭游标,避免资源泄漏
db.close()

额外说明

  • 一定要把your_username、your_password、your_database_name替换成你自己的MySQL配置信息。
  • 如果你的test表列名不是示例里的name, col2, col3, col4,一定要改成实际的列名,保证和数据的顺序严格对应。
  • 执行完批量插入后必须调用commit(),不然数据不会真正写入数据库。
  • 养成关闭游标和数据库连接的习惯,避免长期占用数据库资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:14:01