环境说明:
PyMySQL==1.0.2
python3.8
模型
CREATE TABLE `test` (
`id` int(11) NOT NULL COMMENT "",
`name` varchar(20) NULL DEFAULT "" COMMENT "",
`num` int(11) NULL DEFAULT "0" COMMENT ""
)
单条写入和多条写入
单条写入
insert into test(id,name,num)values(1,'a',1);
insert into test(id,name,num)values(2,'b',2);
多条写入
insert into test(id,name,num)values(1,'a',1),(2,'b',2);
本次测试目标
executemany如何是真正意义上的批量写入
测试1
#构造数据和sql
initDatas = [[1,1,"a"],[2,2,"b"]]
insertSql = "insert into test(id,name,num) values(%s,%s,%s)"
#执行批量写入
rows = cursor.executemany(insertSql,initDatas)
查看写入日志
测试1结论
数据是批量写入
测试2
#构造数据和sql
initDatas = [[3,3],[4,4]]
insertSql = "insert into test(id,name,num) values(%s,'tom',%s)"
#执行批量写入
rows = cursor.executemany(insertSql,initDatas)
查看写入日志
测试2结论
数据是批量写入
为了实现批量写入和传值,将需要传入的值写入二维数据表中
测试3
#构造数据和sql
initDatas = [[5,'tom',5],[6,'tom',6]]
insertSql = "insert into test(id,name,num) values(%s,%s,%s)"
#执行批量写入
rows = cursor.executemany(insertSql,initDatas)
查看写入日志
测试3结论
数据是批量写入
最后
本次测试使用的不是mysql数据库,而是一款分布式数据库,正好可以通过日志检测到数据写入变化。
批量写入的性能会远远大于单条写入,pymysql中没有参数可以设置是否批量写入。