Python对比两个MongoDB数据库里的Collection数据

 1 #coding=utf-8
 2 from pymongo import MongoClient
 3
 4 def get_all_ids(collection):
 5     for each in collection.find():
 6         yield each[‘_id‘]
 7
 8 def compare_dict(this, other):
 9     del this[‘_id‘]
10     del other[‘_id‘]
11     return this == other
12
13 def compare(_first_collection, _second_collection):
14     print ‘Total documents are (first:%d, second:%d)‘ % (_first_collection.count(), _second_collection.count())
15     for _id in get_all_ids(_first_collection):
16         _first = _first_collection.find_one({‘_id‘:_id})
17         _second = _second_collection.find_one({‘_id‘:_id})
18         if not (_first and _second):
19             print ‘document with ObjectId("%s") not in both databases...‘ % _id
20             continue
21         if not compare_dict(_first, _second):
22             print ‘document with ObjectId("%s") not same in both databases...‘ % _id
23
24 if __name__ == ‘__main__‘:
25     client1 = MongoClient(‘localhost‘, 27017)
26     client2 = MongoClient(‘localhost‘, 19871)
27     try:
28         compare(client1.NewRisDatabase.NewRisCollection, client2.NewRisDatabase.NewRisCollection)
29     except Exception as e:
30         print e.message
31     finally:
32         client1.close()
33         client2.close()
时间: 2024-10-27 07:09:59

Python对比两个MongoDB数据库里的Collection数据的相关文章

python操作MONGODB数据库,提取部分数据再存储

目标:从一个数据库中提取几个集合中的部分数据,组合起来一共一万条.几个集合,不足一千条数据的集合就全部提取,够一千条的就用一万减去不足一千的,再除以大于一千的集合个数,得到的值即为所需提取文档的个数.从每个集合中提取的数据存放到新的对应集合中,新集合名称为原先集合加"_col". 用到相关技术点: 操作MONGODB: 先通过IP和端口号连接到MONGODB所在的机器,得到一个MONGODB客户端对象,然后认证某个数据库的账号密码连接到该数据库,得到一个该数据库的对象.一个数据库下有很

MongoDB数据库文件损坏恢复数据全过程

一.故障描述 客户设备环境为一台操作系统为Windows Server 2008的服务器,部署MongoDB数据库.由于业务需要,客户在未关闭MongoDB数据库服务的情况下,对数据库文件进行了拷贝.将数据库文件拷贝到其他分区后,客户对原数据库分区进行了格式化操作,后将数据库文件拷回原分区,重新启动MongoDB服务,这时,客户发现服务无法启动.报错如下:图一: 二.故障检测 一般来说,在服务没有关闭的情况下,直接对MongoDB数据库文件进行拷贝,由于服务还在运行,会导致mongod.lock

Python中从SQL型数据库读写dataframe型数据

Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表格的形式储存,因此经常将sql数据库里的数据直接读取为dataframe,分析操作以后再将dataframe存到sql数据库中.而pandas中的read_sql和to_sql函数就可以很方便得从sql数据库中读写数据. read_sql 参见pandas.read_sql的文档,read_sql主要有如下几个参数: sql:SQL命令字符串 con:连接sql数据库的engine,一般可以用SQLalchemy

使用python实现两个文件夹里文件的对比(包含内容的对比)

#-*-coding:utf-8-*- #=============================================================================== # 目录对比工具(包含子目录 ),并列出# 1.A比B多了哪些文件 # 2.B比A多了哪些文件 # 3.二者相同的文件:文件大小相同 VS 文件大小不同 (Size相同文件不打印:与Size不同文件显示未排序)#===========================================

Python对比两个txt文件内容

difflib模块作为python的标准库模块,无需安装,作用是比对文本之间的差异,且支持输出可读性比较强的html格式. #!coding=utf-8 # 2018-9-19 import sys import difflib # 读取配置文件函数 def read_file(file_name): try: file_handle = open(file_name, 'r') text = file_handle.read().splitlines() # 读取后以行进行分割 file_ha

python对比两个文件问题

写一个比较两个文本文件的程序. 如果不同, 给出第一个不同处的行号和 列号. 比较的时候可以使用zip()函数 1 a=open('test.txt','r') 2 b=open('test2.txt','r') 3 row=0 4 for linea,lineb in zip(a,b): 5 row+=1 6 if not linea==lineb: 7 col=0 8 for chara,charb in zip(linea,lineb): 9 col+=1 10 if not chara=

【MongoDB】Mongodb数据库之Capped Collection集合

Capped Collection是性能出色的有着固定大小的集合,以LRU(least Recently Used,最近最少使用)规则和插入顺序执行age-out(老化移出)处理,自动维护集合中对象的插入顺序. 一.创建Capped Collection 创建时候要预先指定大小,如果空间用完,新添加的对象将会取代集合中最近的对象.更新如果超出了collectiond 大小,则会更新失败.虽然不允许删除,但是可以调用drop方法删除集合中所有的文档. 删除后要显示重建集合.在32机器上,一个cap

mongodb数据库被黑客删除数据的表现

前些日子看阿里云便宜,买了一个,安装了一个mongodb,自己连着做调试. 好久没用了,今天突然惊喜的发现被黑客登录了.没想到居然还有人靠这么低级的漏洞混饭吃. 被黑的表现如下: > show dis HOW_TO_RESTORE_mydb1 0.078GB HOW_TO_RESTORE_mydb2 0.078GB README 0.078GB local 0.078GB mydb1 0.453GB mydb2 0.453GB 其中mydb1的数据和mydb2的数据都被清空了. 从mongodb

mongodb数据库备份导入导出数据

备份数据: mongodump -h 192.168.2.20 -u game -p 12345678 -d dbname -o /data/test/ --excludeCollection=user_stats 其中-h为IP地址,-u账号,-p密码,-d数据库名称,-o存储数据的路径,--excludeCollection表示需过滤的集合,--excludeCollectionsWithPrefix表示过滤某些集合的前缀 导入数据: mongorestore --db gourmet --