【工具封装】不用 for 循环, 教你如何向MySQL数据库批量插入数据

一、前言

今天教你 不用 for 循环,如何向 MySQL 数据库 批量插入数据

废话不多说,直接看步骤实现 。。。

好文章 记得收藏+点赞+关注额 !!!

---- Nick.Peng


二、封装执行SQL方法

import json
from pymysql import *

def exec_sql(db_name, sql):
    """
    封装sql执行方法
    :param db_name: 操作的数据库名字
    :param sql: 要执行的sql语句
    :return:
	"""
    conn = connect(host="127.0.0.1",
                   port=3306,
                   user="root",
                   password="root",
                   database=db_name)
    conn.autocommit(1)
    cs = conn.cursor()
    count = cs.execute(sql)
    conn.commit()
    cs.close()
    conn.close()


三、封装插入数据方法

import re

def save_analysis_data(count, *analysis_data):
    """
    拼接SQL并插入分析数据
    :param count: 当前表字段的个数
    :param analysis_data: 要插入的分析数据
    :return:
    """
    space = re.sub('}{', '},{', '{}' * count)
    # 自动拼接 批量数据插入 SQL语句
    sql = f"""INSERT INTO table_name (字段1, 字段2, 字段3, 字段4, 字段5, 字段6) VALUES {space}""".format(*analysis_data)
    print("SQL语句:", sql)
    # 执行SQL插入操作
    app_db.exec_sql(db_name, sql)
    # SQL拼接示例:
    """
    INSERT INTO table_name ( 字段 1, 字段 2, 字段 3, 字段 4, 字段 5, 字段 6 )
    VALUES
        ( 字段 1, 字段 2, 字段 3, 字段 4, 字段 5, 字段 6 ),
        ( 字段 1, 字段 2, 字段 3, 字段 4, 字段 5, 字段 6 ),
        ( 字段 1, 字段 2, 字段 3, 字段 4, 字段 5, 字段 6 ),
        ( 字段 1, 字段 2, 字段 3, 字段 4, 字段 5, 字段 6 )
    """


四、案例演示

# 以下是准备插入数据库的数据(要插入表的字段个数:这里假设有6个)
list1 = ['元素1', '元素2', '元素2', '元素3', '元素4', '元素5', '元素6', '元素7'......]  # 字段1 的列表
list2 = ['元素1', '元素2', '元素2', '元素3', '元素4', '元素5', '元素6', '元素7'......]  # 字段2 的列表
list3 = ['元素1', '元素2', '元素2', '元素3', '元素4', '元素5', '元素6', '元素7'......]  # 字段3 的列表
list4 = ['元素1', '元素2', '元素2', '元素3', '元素4', '元素5', '元素6', '元素7'......]  # 字段4 的列表
list5 = ['元素1', '元素2', '元素2', '元素3', '元素4', '元素5', '元素6', '元素7'......]  # 字段5 的列表
list6 = ['元素1', '元素2', '元素2', '元素3', '元素4', '元素5', '元素6', '元素7'......]  # 字段6 的列表
list6 = json.dumps(list6, ensure_ascii=False)     # 如果某个字段为JSON类型,需要提前转换

# 将数据集中打包成一个元组列表
analysis_data = zip(list1, list2, list3, list4, list5, list6)

# 调用插入数据方法
save_analysis_data(len(list1), *analysis_data)

​​

发布了150 篇原创文章 · 获赞 371 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/PY0312/article/details/103911759