python脚本操作MySQL数据库的一些问题

python脚本操作MySQL数据库的一些问题

博主小妹在某公司实习,被分派做数据清洗和梳理(此处不得不提及自己实在太菜了),遇到一系列MySQL数据库的处理问题,列在此处,作为总结。

1. 数据抽取缓慢

  没什么好方法,获取到的经验就是尽量减少在SQL语句中使用Join和Left Join,Join语句会对全表进行查询匹配,查询速度慢,可以先将两表所需数据读取到内存中,在内存中进行匹配。

2. 数据处理缓慢

  一开始进行数据抽取匹配时,运用了多层循环,其实有些循环是不必要的,有些循环在梳理逻辑时是可以避免的。尽量减少循环遍历能在一个循环内处理的操作,不要遍历两次。(ps: defaultdict真的好用)

3. 数据插入耗时长

  导师一开始给的学习脚本,每一条数据Insert并且commit一次,插入数据耗时特别长。改进过程中采取的思路是:将1000条数据存入一个List,每1000条数据进行一次插入操作。代码如下:

objs = []
for dim in datas:   
    objs.append(datas[dim])
    if len(objs) >= 1000:
        data_insert(ins_sql, objs)  // 封装的insert函数,ins_sql为sql语句
        objs = []
data_insert(ins_sql, objs)

4. 数据库查询时间长

  在实际任务中,数据以django接口的方式提供,开发时遇到了数据读取缓慢的问题,解决的方式是在对应的筛选字段上添加index。数据库添加index的命令为:

ALTER TABLE ‘tablename’ ADD INDEX ‘index_name’ (‘column_name’)

一些其他的tips:
  1. 脚本中一定要注意logging的使用,能极大的方便统计数据处理时间,记录数据处理的一些鼓掌
  2. python脚本自动运行分为两步:①编辑shell命令文件用于运行python,②使用crontab命令编辑定时执行shell命令

Record at 14:54 2017/6/30

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值