一、前言
今天教你 不用 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)