python提高导入数据库速度_提高从MongoDB导入数据速度

Python编写爬虫,用的是Scrapy框架,将数据存储到了本机的MongoDB数据库上。导数据的时候发现数据的转化,速度有点慢。

from pymongo import MongoClient

#建立MongoDB数据库连接

client = MongoClient('localhost',27017)

#连接所需数据库,test为数据库名

db=client.TrimPage

#连接所用集合,也就是我们通常所说的表,collection为表名

collection = 'Trimcodename2'

table=db[collection]

#查找集合中所有数据

result=[]

for item in table.find():

result.append(item)

很快,我就得到了一个叫result的list

接下来,我想把这些数据保存到一个Pandas的DataFrame里,保存的过程中顺便进行处理。下面的代码是根据网上现有代码进行修改。主要的思路是先建一个DataFrame对象,再通过append函数添加数据。

import pandas as pd

df = pd.DataFrame()

for i in result:

a=i['id']

b = i['content'].replace('\n','').replace('\xa0','').replace('\r','').replace('\t','').replace(' ','')

df = df.append([[a,b]])

结果遇到了一个坑,数据跑了一个多小时都没跑完。我强行结束发现,只进行了一般。

于是我尝试了一个直接导入。

df2=pd.DataFrame(result)

结果竟然成功了!!!!几秒钟!!!

但是还有一步处理数据的过程,是这步比较花时间吗?

我继续尝试使用DataFrame的map函数,看看会消耗多少时间。

df2['content'] = df2['content'].map(lambda x: x.replace('\n','').\

replace('\xa0','').replace('\r','').replace('\t','').replace(' ','') )

还是瞬间!!!

然后这个故事告诉我们,尽量不要用循环!!

郁闷的我决定记录下这个一个半小时的教训。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值