pymongo insert_many 批量插入的实例


Posted in Python onDecember 05, 2020

我就废话不多说了,大家还是直接看代码吧~

lt=client.fangjia.district_stat_all_0416
dl = dt.find(query)

bf=[]
for m in dl:
  bf.append(m)
  if len(bf)==20000:
    lt.insert_many(bf)
    bf=[]
lt.insert_many(bf)

补充知识:Python操作Mongodb插入数据的两种方法:insert_one()与insert_many()

代码说明:

将mysql中table的数据插入到mongodb里

sys.setdefaultencoding('utf8')
import web
from pymongo import MongoClient
class getPltfList(object):
  def __init__(self):
    self.db1 = web.database(dbn='mysql', db = 'episode', user = 'root', pw= 'abc111--', host = '127.0.0.1')
    self.db1.printing = False
    self.db2 = web.database(dbn='mysql', db = 'episode_soc', user = 'root', pw= 'abc111--', host = '127.0.0.1')
    self.db2.printing = False
    self.db3 = web.database(dbn='mysql', db = 'cl_episode', user = 'root', pw= 'abc111--', host = '127.0.0.1')
    self.db3.printing = False
    self.db4 = web.database(dbn='mysql', db = 'cl_episode_soc', user = 'root', pw= 'abc111--', host = '127.0.0.1')
    self.db4.printing = False
  def __call__(self):
    return self.createPltfList()

  def createPltfList(self):
    self.ckpltfList = list(self.db1.query('select name, ip from EPISODE_PLTF_INFO order by id DESC'))
    self.ckpltfList += list(self.db2.query('select name, ip from EPISODE_PLTF_INFO order by id DESC'))
    self.clpltfList = list(self.db3.query('select name, ip from EPISODE_PLTF_INFO order by id DESC'))
    self.clpltfList += list(self.db4.query('select name, ip from EPISODE_PLTF_INFO order by id DESC'))

    return self.ckpltfList,self.clpltfList

if __name__ == '__main__' :
  mpList = list()
  flag = 0
  tmp = 0
  sum1 = 0
  sum2 = 0
  pltfList = getPltfList()()
  client = MongoClient("127.0.0.1", 27017)
  mdb = client.episode
  collection = mdb.pltf_basic_info
  # print (type(pltfList[1])) #list
  result= list()
  for pltf_my in pltfList[0]:
    pltf_mog = collection.find()
    for record in pltf_mog:
      IP = record.get('Cfg').get('Debug_IP')
      Name = record.get('Cfg').get('Register_Name')
      # print IP, Name
      if IP == pltf_my['ip'] and Name == pltf_my['name'] :
        flag = 1
        # print IP, Name
        break
      else:
        flag = 0

    if flag == 0 :
      data1 = {"Cfg" : {"Debug_IP" : pltf_my['ip'],"Register_Name":pltf_my['name'], "Site":"SH-CK"} }
      # print data1
      result.append((data1))
      # collection.insert_one(data1)
      # collection.delete_one(data)
      sum1 = sum1+1
  # print len(result)
  # collection.insert_many(result)
  for pltf_my in pltfList[1]:
    pltf_mog = collection.find()
    for record in pltf_mog:
      IP = record.get('Cfg').get('Debug_IP')
      Name = record.get('Cfg').get('Register_Name')
      if pltf_my['ip'].encode("utf-8") == IP.encode("utf-8") and pltf_my['name'].encode("utf-8") == Name.encode("utf-8") :
        tmp = 1
        # print IP, Name
        break
      else:
        tmp = 0

    if tmp == 0 :
      data2 = {"Cfg" : {"Debug_IP":pltf_my['ip'],"Register_Name":pltf_my['name'], "Site":"SH-CL"} }
      # print data2
      result.append((data2))

      # collection.insert_one(data2)
      # collection.delete_one(data)
      sum2 = sum2+1

  collection.insert_many(result)
  print sum1,sum2

刚开始的时候我使用的是insert_one()方法,一条一条的插入到mongodb的集合里,但是计算出的sum有出入。

在调试的过程中我发现:

注释掉 # collection.insert_one(data1) # collection.insert_one(data2)

计算出来的sum1 = 193 sum2 = 222 这是合理的,因为ck_mysql里有193条记录,cl_mysql里有234条记录,mongod里有总共有15条,但是12条是与cl_mysql重复,所以正确。

但是当我去掉注释使用 collection.insert_one(data1) collection.insert_one(data2)时,打印出的sum1=181 sum2 = 213

也就是说少了几个数据,我不知道去哪了。

想了好多办法,于是采用insert_many()的方法插入。先定义一个list(),将每个数据(数据的类型是dict)追加到list里:reslult.append(data1/data2),最后result里就会含有所有的数据,一起插入。

于是乎,问题解决了。

可是我还是很困惑insert_one()哪里出问题了!!!!!!

以上这篇pymongo insert_many 批量插入的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现建立SSH连接的方法
Jun 03 Python
python进行TCP端口扫描的实现
Dec 21 Python
Python异常处理知识点总结
Feb 18 Python
Python3.5面向对象编程图文与实例详解
Apr 24 Python
Django组件cookie与session的具体使用
Jun 05 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
使用pytorch实现可视化中间层的结果
Dec 30 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 Python
Python如何使用ElementTree解析xml
Oct 12 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 29 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 Python
python 写一个文件分发小程序
Dec 05 #Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 #Python
用python对oracle进行简单性能测试
Dec 05 #Python
python mongo 向数据中的数组类型新增数据操作
Dec 05 #Python
python自动从arxiv下载paper的示例代码
Dec 05 #Python
python使用dlib进行人脸检测和关键点的示例
Dec 05 #Python
python从ftp获取文件并下载到本地
Dec 05 #Python
You might like
PHP高级OOP技术演示
2009/08/27 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
python能做什么 python的含义
2019/10/12 Python
python实现淘宝购物系统
2019/10/25 Python
Python range与enumerate函数区别解析
2020/02/28 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
鲜花方阵解说词
2014/02/13 职场文书
监考失职检讨书
2015/01/26 职场文书
个人求职信格式范文
2015/03/20 职场文书
新闻稿怎么写
2015/07/18 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL