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

Python通过CSV导入数据至MySQL失败,请求技术排查解决

Python批量插入CSV数据到MySQL的问题解决

核心错误点

  • 参数化语句格式错误:你给%s加了单引号,这会导致mysql-connector无法正确解析参数,应该直接写%s,不要加任何引号,驱动会自动根据数据类型处理引号和转义。
  • 提交事务的方式错误:不能用mycursor.execute("commit;"),正确的做法是调用连接对象的commit()方法。
  • 未处理CSV表头:如果你的CSV文件第一行是表头,循环插入时会把表头当成数据插入,导致类型不匹配错误。

修正后的完整代码

import mysql.connector
import csv

# 替换成你的数据库账号信息
user = "your_username"
password = "your_password"
db = "texperts"

mydb = mysql.connector.connect(
    host="localhost",
    user=user,
    password=password,
    database=db
)

mycursor = mydb.cursor()
with open(r"C:\data\LEARNING\PHYTON\excel\MySQL\texperts\EMPLOYEES.csv") as csv_data:
    csv_reader = csv.reader(csv_data, delimiter=',')
    # 跳过CSV表头(如果文件第一行是表头的话)
    next(csv_reader)
    for row in csv_reader:
        print(row)
        # 注意:VALUES里的%s不要加单引号
        sql = "INSERT INTO employee(emp_id, emp_init, first_name, last_name, email, phone, role_id) VALUES(%s,%s,%s,%s,%s,%s,%s)"
        mycursor.execute(sql, row)
        print("Record Inserted")

# 正确提交事务
mydb.commit()
mycursor.close()
mydb.close()

额外说明

  • 确保CSV里的emp_id和role_id与数据库字段类型匹配(比如数据库是INT类型,CSV里对应值不要带引号),驱动会自动完成类型转换。
  • 调试时可以通过mycursor.statement查看实际执行的SQL语句,方便排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:20:04