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

如何使用Python与MySQL Connector实现批量插入操作

使用mysql.connector实现MySQL批量插入优化

核心优化方案:用executemany()替代循环单条插入

mysql.connector提供的executemany()方法可一次性提交多条插入语句,大幅减少网络IO开销,能把21条插入的耗时从数秒压缩到毫秒级。结合连接池的具体实现如下:

1. 配置连接池

先初始化连接池,复用连接避免重复建立连接的额外开销:

import mysql.connector
from mysql.connector import pooling

# 初始化连接池
db_pool = pooling.MySQLConnectionPool(
    pool_name="my_pool",
    pool_size=5,  # 根据业务需求调整池大小
    host="你的数据库地址",
    user="数据库用户名",
    password="数据库密码",
    database="目标数据库名"
)

2. 准备批量插入数据

把21个布尔值整理成二维列表格式,每个子列表对应一条插入记录的参数:

# 示例:21个布尔值的数据集
bool_values = [True, False, True, True, False, ...]  # 补全剩余布尔值
# 转换为executemany要求的格式:[(val1,), (val2,), ...]
batch_data = [(val,) for val in bool_values]

3. 执行批量插入

从连接池获取连接,用executemany()执行批量操作,同时做好事务处理:

try:
    # 从连接池获取连接
    conn = db_pool.get_connection()
    cursor = conn.cursor()
    
    # 插入语句,注意mysql.connector用%s作为参数占位符
    insert_sql = "INSERT INTO 你的表名(布尔类型字段名) VALUES (%s)"
    
    # 执行批量插入
    cursor.executemany(insert_sql, batch_data)
    
    # 提交事务
    conn.commit()
    print(f"成功插入{cursor.rowcount}条记录")
except mysql.connector.Error as err:
    print(f"错误信息: {err}")
    # 出错时回滚事务,避免数据不一致
    if conn.is_connected():
        conn.rollback()
finally:
    # 关闭游标和连接(连接会自动放回连接池,而非真正关闭)
    if cursor:
        cursor.close()
    if conn:
        conn.close()

关键注意事项

  • 占位符规范:mysql.connector的参数占位符是%s,不要和其他数据库驱动的?混淆。
  • 数据格式匹配:批量数据必须是二维可迭代对象,即使只有一个字段,也要写成(val,)的元组形式。
  • 事务必要性:批量插入务必添加事务处理,保证数据的一致性,避免部分插入成功部分失败的情况。
  • 连接池复用:使用完连接后调用conn.close(),连接会自动放回连接池供后续请求复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:00:52