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中的测试模块unittest和doctest的使用教程
Apr 14 Python
详解Python中expandtabs()方法的使用
May 18 Python
详解Python验证码识别
Jan 25 Python
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
Python 数据处理库 pandas进阶教程
Apr 21 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
python 实现语音聊天机器人的示例代码
Dec 02 Python
分享8点超级有用的Python编程建议(推荐)
Oct 13 Python
python深copy和浅copy区别对比解析
Dec 26 Python
Python tkinter三种布局实例详解
Jan 06 Python
Pytorch释放显存占用方式
Jan 13 Python
python turtle工具绘制四叶草的实例分享
Feb 14 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的AES加密算法完整实例
2016/07/20 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
html下载本地
2006/06/19 Javascript
用js来解决ajax读取页面乱码
2010/11/28 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
jquery实现Ajax请求的几种常见方式总结
2019/05/28 jQuery
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
gearman的安装启动及python API使用实例
2014/07/08 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
幼儿园义卖活动方案
2014/01/17 职场文书
地球一小时活动总结
2015/02/27 职场文书
长征观后感
2015/06/09 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书