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时区设置方法与pytz查询时区教程
Nov 27 Python
编写简单的Python程序来判断文本的语种
Apr 07 Python
python九九乘法表的实例
Sep 26 Python
怎么使用pipenv管理你的python项目
Mar 12 Python
Django如何自定义分页
Sep 25 Python
Python实现将多个空格换为一个空格.md的方法
Dec 20 Python
Python实现分数序列求和
Feb 25 Python
Python爬虫抓取指定网页图片代码实例
Jul 24 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 Python
怎么用Python识别手势数字
Jun 07 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 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
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
python实现聚类算法原理
2018/02/12 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
Python turtle库的画笔控制说明
2020/06/28 Python
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
销售自我评价
2013/10/22 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
文明生主要事迹
2014/05/25 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
银行柜员与客户起冲突检讨书
2014/09/27 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
网络妈妈观后感
2015/06/08 职场文书
MySQL连接控制插件介绍
2021/09/25 MySQL