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

不使用sqlalchemy如何将Pandas DataFrame导入MySQL数据库?

方案1:沿用现有依赖批量插入(无需额外安装库)

该方法完全适配你当前使用的flask_mysqldb连接逻辑,使用executemany实现批量插入,性能远高于逐行执行execute:

# 提取指定列,转换为(邮件, 姓名)格式的元组列表
data = df[['email', 'name']].values.tolist()

# 批量执行插入操作
cursor.executemany('INSERT INTO accounts (email, name) VALUES (%s, %s)', data)
mysql.connection.commit()

可选优化:如果accounts表的email字段已设置唯一索引,想要避免重复插入报错,可以把SQL语句改为INSERT IGNORE INTO accounts (email, name) VALUES (%s, %s),重复数据会自动跳过;需要更新重复数据的姓名则可以用ON DUPLICATE KEY UPDATE语法。
超大批量数据(10万行以上)可以按每批1万~5万行切分后分批提交,避免单次请求数据量过大触发数据库报错。

方案2:使用Pandasto_sql方法(代码更简洁)

如果可以引入SQLAlchemy依赖,该方法代码更精简,自动处理批量逻辑:

  1. 先安装依赖:pip install sqlalchemy pymysql
  2. 执行写入:
from sqlalchemy import create_engine

# 按你实际的数据库配置替换连接串参数
engine = create_engine('mysql+pymysql://[数据库用户名]:[数据库密码]@[主机地址]/[数据库名]?charset=utf8mb4')

# 追加写入accounts表,index=False表示不写入DataFrame的索引列
df[['email', 'name']].to_sql(
    name='accounts',
    con=engine,
    if_exists='append',
    index=False
)

参数说明:if_exists可选值为fail(表存在就报错终止)、replace(删除原表重建后写入)、append(追加到现有表末尾),插入已有表需选择append。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:36:01