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+VTK环境搭建及第一个简单程序代码
Dec 13 Python
numpy自动生成数组详解
Dec 15 Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 Python
python正则表达式面试题解答
Apr 28 Python
python 多线程将大文件分开下载后在合并的实例
Nov 09 Python
Python语言快速上手学习方法
Dec 14 Python
详解python中@的用法
Mar 27 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 Python
使用python生成大量数据写入es数据库并查询操作(2)
Sep 23 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 ADODB使用方法集锦
2008/03/25 PHP
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
php设置允许大文件上传示例代码
2014/03/10 PHP
php写的AES加密解密类分享
2014/06/20 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
checkbox使用示例
2013/08/23 Javascript
js字符串转成JSON
2013/11/07 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
angular分页指令操作
2017/01/09 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
python计算无向图节点度的实例代码
2019/11/22 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
小结Python的反射机制
2020/09/28 Python
python xlsxwriter模块的使用
2020/12/24 Python
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
毕业生学校推荐信范文
2014/05/21 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
医院感染管理制度
2015/08/05 职场文书
Java实现简易的分词器功能
2021/06/15 Java/Android
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang