您的位置:首页 > 编程语言 > Python开发

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

2017-06-30 14:55 337 查看

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:

脚本中一定要注意logging的使用,能极大的方便统计数据处理时间,记录数据处理的一些鼓掌

python脚本自动运行分为两步:①编辑shell命令文件用于运行python,②使用crontab命令编辑定时执行shell命令

Record at 14:54 2017/6/30
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python mysql