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使用htpasswd实现基本认证授权的例子
Jun 10 Python
python中lambda()的用法
Nov 16 Python
python编程通过蒙特卡洛法计算定积分详解
Dec 13 Python
Python比较2个时间大小的实现方法
Apr 10 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
python验证码图片处理(二值化)
Nov 01 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
Nov 28 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
Oct 15 Python
python 日志模块logging的使用场景及示例
Jan 04 Python
python制作微博图片爬取工具
Jan 16 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 年龄计算函数(精确到天)
2012/06/07 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
python实现滑雪者小游戏
2020/02/22 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
博士生入学考试推荐信
2013/11/17 职场文书
中班中秋节活动反思
2014/02/18 职场文书
离婚协议书范本2014
2014/10/27 职场文书
2014小学年度工作总结
2014/12/20 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书