zoukankan      html  css  js  c++  java
  • python操作mongodb之五大量写操作

    import pymongo
    #库名
    db = pymongo.MongoClient('192.168.30.252',27017).bulk_example
    #test集合插入
    db.test.insert_many([{'i':i} for i in xrange(10000)]).inserted_ids
    db.test.count()
    #有条理的大规模数据写入
    bulk = db.test.initialize_ordered_bulk_op()
    # Remove all documents from the previous example.
    bulk.find({}).remove()
    bulk.insert({'_id': 1})
    bulk.insert({'_id': 2})
    bulk.insert({'_id': 3})
    #更新
    bulk.find({'_id': 1}).update({'$set': {'foo': 'bar'}})
    #插入替换
    bulk.find({'_id': 4}).upsert().update({'$inc': {'j': 1}})
    #替换
    bulk.find({'j': 1}).replace_one({'j': 2})
    #execute是执行
    result = bulk.execute()
    pprint(result)
    
    #存在异常 的处理
    from  pymongo.errors import BulkWriteError
    #缓存队列
    bulk=db.test.initialize_ordered_bulk_op()
    #查找j=2 然后替换成j=5
    bulk.find({'j': 2}).replace_one({'i': 5})
    #插入id=4
    bulk.insert({'_id':4})
    bulk.find({'i':5}).remove_one()
    try:
    	bulk.execute()
    except BulkWriteError as bwe:
    	pprint(bwe.details)  
    
    from  pymongo.errors import BulkWriteError
    bulk = db.test.initialize_unordered_bulk_op()
    bulk.insert({'_id': 1})
    bulk.find({'_id': 2}).remove_one()
    bulk.insert({'_id': 3})
    bulk.find({'_id': 4}).replace_one({'i': 1})
    try:
    	bulk.execute()
    except BulkWriteError as bwe:
    	pprint(bwe.details) 
    
    
    #初始化队列
    bulk = db.test.initialize_ordered_bulk_op()
    bulk.insert({'a': 0})
    bulk.insert({'a': 1})
    bulk.insert({'a': 2})
    bulk.insert({'a': 3})
    try:
    	bulk.execute({'wtimeout': 1})
    except BulkWriteError as bwe:
    	pprint(bwe.details)
    

      

  • 相关阅读:
    5 粘包现象与解决方案
    4 Socket代码实例
    协程与多路io复用epool关系
    基于selector的socket并发
    基于select类型多路IO复用,实现简单socket并发
    协程实现多并发socket,跟NGINX一样
    利用协程实现简单爬虫
    协程
    进程池pool
    进程锁 Lock
  • 原文地址:https://www.cnblogs.com/similarface/p/5613930.html
Copyright © 2011-2022 走看看