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的Django框架中加载模版的方法
Jul 16 Python
举例详解Python中yield生成器的用法
Aug 05 Python
Windows和Linux下Python输出彩色文字的方法教程
May 02 Python
python之文件读取一行一行的方法
Jul 12 Python
10分钟用python搭建一个超好用的CMDB系统
Jul 17 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 Python
Django3.0 异步通信初体验(小结)
Dec 04 Python
Python动态声明变量赋值代码实例
Dec 30 Python
基于python实现删除指定文件类型
Jul 21 Python
python判断all函数输出结果是否为true的方法
Dec 03 Python
Python读写Excel表格的方法
Mar 02 Python
Pytorch中expand()的使用(扩展某个维度)
Jul 15 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解析URL函数parse_url和parse_str
2014/11/11 PHP
php实现字符串反转输出的方法
2015/03/14 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
JavaScript引用类型Function实例详解
2018/08/09 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
Python中不同进制的语法及转换方法分析
2016/07/27 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
python 列表降维的实例讲解
2018/06/28 Python
eclipse创建python项目步骤详解
2019/05/10 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
2014年文学毕业生自我鉴定
2014/04/23 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
优秀教研组申报材料
2014/12/26 职场文书
介绍长城的导游词
2015/01/30 职场文书
《落花生》教学反思
2016/02/16 职场文书
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android