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

使用Python将CSV文件导入MySQL数据库运行报错如何解决

CSV导入MySQL故障排查与修复方案

运行报错信息截图

原始测试代码

pip install sqlalchemy
pip install mysqlclient pymysql

from sqlalchemy import create_engine
import pandas as pd
df=pd.read_csv("olympix.csv")
db_connection_str='mysql+pymysql://root:Shubh@123/olympix'
db_connection=create_engine(db_connection_str)
print(df)
df.to_sql('olympix',db_connection) 

核心故障点排查

  • 连接串解析错误:数据库密码Shubh@123包含特殊字符@,SQLAlchemy默认按用户名:密码@主机地址的规则解析连接串,会把密码截断为Shubh,把123识别为主机地址,直接导致数据库连接失败。
  • 连接串缺省参数错误:原始连接串未指定MySQL主机地址、端口、字符集,默认解析逻辑容易出现寻址失败、中文乱码问题。
  • to_sql参数缺失:默认配置会把Pandas自动生成的行索引作为独立字段写入表,且表已存在时直接抛出报错,没有配置写入冲突处理规则。
  • 前置依赖/环境校验缺失:未提前确认olympix数据库是否存在、MySQL服务是否正常启动、账号是否有写入权限,也未校验CSV文件路径是否正确。

修复后可运行代码

先在终端执行依赖安装(不要把pip命令写到Python脚本里运行):

pip install pandas sqlalchemy pymysql

Python脚本代码:

from sqlalchemy import create_engine
import pandas as pd
from urllib.parse import quote_plus

# 读取CSV文件,运行前确认文件路径和文件名拼写正确
df = pd.read_csv("olympix.csv")

# 转义密码中的特殊字符,避免连接串解析错误
db_password = quote_plus("Shubh@123")
# 补全连接串参数,指定本地主机、3306端口、utf8mb4字符集
conn_str = f"mysql+pymysql://root:{db_password}@127.0.0.1:3306/olympix?charset=utf8mb4"
engine = create_engine(conn_str)

# 写入数据库
df.to_sql(
    name="olympix",
    con=engine,
    if_exists="replace",  # 表存在时替换,需追加数据可改为"append"
    index=False,  # 不写入Pandas生成的行索引
    chunksize=1000  # 大文件分批写入,避免内存占用过高
)
print("数据写入完成")

前置校验步骤

执行代码前先确认以下配置:

  • 本地MySQL服务正常启动,3306端口未被占用
  • 手动登录MySQL执行CREATE DATABASE IF NOT EXISTS olympix DEFAULT CHARSET utf8mb4;,确认目标库存在
  • root账号密码正确,且对olympix库有读写权限
  • 脚本运行目录下存在olympix.csv文件,无文件名拼写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:31:19