我是一名挣扎在编程链底端的pythoner,工作中既要和数据打交道,也要保持和erp系统,web网站友好的"沟通"···,我会时不时的分享下工作中遇到那点事,包括个人觉得值得记录的编程小技巧,还有就是遇到的问题以及解决方案,还有源码的阅读等等,可能也有编程中的生活感悟,不说了,我要去重构我的程序了
本文基于python, 使用pandas, pymysql等三方库实现了向数据库中高效批量插入数据,一方面提供被网上很多瞎转载的答案给坑蒙了的人(因为我也是),一方面自己也做个笔记,以后方便查阅
需求原因
最近在处理一个需求,有关批量往数据库插入数据的,描述如下
- 原来的程序是基于sql的存储过程进行数据的更新修改操作,由于数据量较大,导致对数据库压力太大,于是需要将程序重构为用python读取文件的方式将数据做计算处理,减少这部分的压力,最后仅仅将计算的结果调用aws的lambda服务重新更新到数据库中就可以了,减少了极大的压力,也降低了成本。涉及数据库主要是插入及更新操作
版本库信息
基于linux系统写的
三方库 >>> pandas 1.0.5, pymysql 0.9.3
python版本 >>> 3.7
标准库 >> os
逻辑梳理
实际上,最后一步,要写入数据库的文件数据是存储在内存中的。因为读取文件后进行的计算都是在内存中进行的,那么计算的结果也没必要再写到本地,再去读取,再写入数据库,这是会影响程序的效率的。逻辑如下
- 读取文件
- 文件的拼接及计算,生成新的df
- 初始化数据库的连接
- 将df所需数据转换为元组数据(取决于数据库的三