def insert_data(data,table_name,ziduan): # 分批次插入数据 batch_size = 1000 # 每批次插入的数据量 # 模拟需要插入的数据 # data = [(i, f'name_{i}') for i in range(1, 10001)] # 计算数据总量和批次数 data_len = len(data) batch_num = (data_len - 1) // batch_size + 1 # 分批次插入 with pool.connection() as conn: cursor = conn.cursor() for i in range(batch_num): start = i * batch_size end = min((i + 1) * batch_size, data_len) batch_data = data[start:end] placeholders = ','.join(['(%s)'] * len(batch_data)) sql = f"INSERT INTO `{table_name}` (`{ziduan}`) VALUES {placeholders}" print(sql) values = tuple(batch_data) cursor.execute(sql, values) conn.commit()给这段代码加注释
时间: 2024-04-23 18:23:42 浏览: 143
mysql 查询某个特定值在整个数据库中所在的表和字段 (已知数据库和字段值,查询表明和字段名)
# 定义插入数据的函数,接收三个参数:数据、表名、字段名
def insert_data(data, table_name, ziduan):
# 每批次插入的数据量
batch_size = 1000
# 计算数据总量
data_len = len(data)
# 计算需要分成多少批次,使用 // 进行整除
batch_num = (data_len - 1) // batch_size + 1
# 分批次插入
# 使用连接池中的连接进行操作
with pool.connection() as conn:
# 获取游标
cursor = conn.cursor()
# 循环批次数次,每次插入一个批次的数据
for i in range(batch_num):
# 计算本批次数据的起始位置和结束位置
start = i * batch_size
end = min((i + 1) * batch_size, data_len)
# 获取本批次数据
batch_data = data[start:end]
# 使用占位符构造 SQL 语句
placeholders = ','.join(['(%s)'] * len(batch_data))
sql = f"INSERT INTO `{table_name}` (`{ziduan}`) VALUES {placeholders}"
print(sql)
# 将数据插入到数据库中
values = tuple(batch_data)
cursor.execute(sql, values)
# 提交事务
conn.commit()
阅读全文