pymongo批量插入

通常我们可以用pymongo这个驱动来作为API操作mongodb,一个典型的需求就是批量插入大量的document(文档),我们知道mongodb是fire-and-forget的模型,即发送数据到mongdb-server后,客户端就认为数据已经保存,这种类似于非阻塞的方式,可以立刻返回。要保存的文档可以放在一个python的数据结构list中,那么如果这list过于庞大,那拍脑袋想想也不利于mongo-server插入内存,更何况内存碎片,网络IO等风险。所以批量操作吧,见下面的一段代码。

from pymongo import Connection
 
loadsplitsize = 10000
 
#init a list
list=['a','b','c']
 
con = Connection('192.168.1.1',12701)
db = con['mydb']
db.authenticate('username', 'passw0rd')
mycollection = db['mycollection']
 
# 分页的插入数据库
offset=0
while(offset < len(list)):
	mycollection.insert(list[offset:offset+loadsplitsize])
	offset += loadsplitsize
 

更多pymongo的API使用请参考 http://api.mongodb.org/python/2.2/tutorial.html

 

Leave a Comment.