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

Python执行MySQL LOAD DATA LOCAL语句时表未更新问题排查

问题:Python执行MySQL LOAD DATA LOCAL语句无报错但未插入数据

我在MySQL客户端中可以正常执行LOAD DATA LOCAL语句将CSV数据导入表中,但用Python执行相同语句时,没有报错却没有数据填充到表中,求指点哪里出错了。

MySQL中可正常运行的语句:

LOAD DATA LOCAL INFILE '/home/user/Downloads/file.csv' INTO TABLE MyDB.MyTable FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'

我使用的Python代码:

sql_statement = """LOAD DATA LOCAL INFILE '/home/user/Downloads/file.csv' INTO TABLE MyDB.MyTable FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'"""
cursor.execute(sql_statement, multi=True)
connection.commit()

解决方法

这种情况我之前也碰到过,主要是LOCAL参数的权限配置问题和Python连接的参数遗漏,你可以按下面的步骤逐一排查:

  • 1. 给MySQL连接添加LOCAL_INFILE支持
    绝大多数Python的MySQL驱动(比如mysql-connector-python、pymysql)默认是关闭LOCAL_INFILE功能的,必须在建立连接时显式开启:

    • 如果你用的是mysql-connector-python:
      import mysql.connector
      
      connection = mysql.connector.connect(
          host='你的数据库地址',
          user='你的用户名',
          password='你的密码',
          database='MyDB',
          allow_local_infile=True  # 关键配置项
      )
      
    • 如果你用的是pymysql:
      import pymysql
      
      connection = pymysql.connect(
          host='你的数据库地址',
          user='你的用户名',
          password='你的密码',
          db='MyDB',
          local_infile=True  # 关键配置项
      )
      
  • 2. 确保MySQL服务器允许LOCAL_INFILE
    服务器端也需要开启这个功能,你可以:

    • 临时生效:在MySQL客户端执行这条SQL
      SET GLOBAL local_infile = 1;
      
    • 永久生效:修改MySQL的配置文件(my.cnf或my.ini),在[mysqld]段添加
      [mysqld]
      local_infile=ON
      
      修改后记得重启MySQL服务。
  • 3. 移除multi=True参数
    你的cursor.execute()里用了multi=True,这个参数是用来批量执行多条SQL语句的,而你这里只有一条LOAD DATA语句,完全不需要这个参数,反而可能干扰执行逻辑。改成:

    cursor.execute(sql_statement)
    connection.commit()
    
  • 4. 验证文件路径和权限
    确认Python运行的用户有读取/home/user/Downloads/file.csv的权限,你可以先在Python里测试读取文件:

    try:
        with open('/home/user/Downloads/file.csv', 'r') as f:
            print(f.readline())
    except Exception as e:
        print(f"读取文件出错:{e}")
    

    如果这里报错,说明是文件权限或路径的问题,需要先解决这个。

按上面的步骤调整后,应该就能正常把CSV数据导入到MySQL表中了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:03:10