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中装饰器的用法
Apr 27 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
Python3.6简单操作Mysql数据库
Sep 12 Python
Django中cookie的基本使用方法示例
Feb 03 Python
Python查找第n个子串的技巧分享
Jun 27 Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 Python
Python将文本去空格并保存到txt文件中的实例
Jul 24 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
Python基于mysql实现学生管理系统
Feb 21 Python
python turtle工具绘制四叶草的实例分享
Feb 14 Python
Python基于Faker假数据构造库
Nov 30 Python
Python脚本调试工具安装过程
Jan 11 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
最省空间的计数器
2006/10/09 PHP
php对称加密算法示例
2014/05/07 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
Git命令之分支详解
2021/03/02 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
Ext 表单布局实例代码
2009/04/30 Javascript
js导航菜单(自写)简单大方
2013/03/28 Javascript
JS分页效果示例
2013/10/11 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
JavaScript实现DOM对象选择器
2016/09/24 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
python cx_Oracle模块的安装和使用详细介绍
2017/02/13 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
大学生村官典型材料
2014/01/12 职场文书
烹饪自我鉴定
2014/03/01 职场文书
合伙经营协议书范本
2014/09/13 职场文书
网络管理员岗位职责
2015/02/12 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
运动会800米赞词
2015/07/22 职场文书
python基础学习之生成器与文件系统知识总结
2021/05/25 Python
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS