python数据对比校验_Python对比数据库两张表是否一致
工作中我们经常需要对比数据库中两张表的数据是否有差异,以下代码通过pymsql对两张表的数据进行简单对比,可以记录新旧表的数据总数,以及两张表中有差异的数据。
应用场景:旧表中数据迁移到新表
运行结果:打印出旧表中有,但是新表中没有的数据(迁移失败的数据),可以指定需要对比的字段
import pymysql
import logging
# 设定日志级别
logging.basicConfig(
level=logging.DEBUG
)
# 旧数据库
conn_old = pymysql.connect(host="localhost",
user="usr",
password="pwd",
db="db",
port=3306,
charset="utf8")
# 新数据库
conn_new = pymysql.connect(host="host",
user="usr",
password="pwd",
db="db",
port=3306,
charset="utf8")
# 新旧表字段存放在二维列表中
def db_diff(tb_new, tb_old, *tb_field):
"""
:param tb_new: 新表
:param tb_old: 旧表
:param tb_field: [[新表中字段,],[对应旧表中的字段,]]
:return: 返回新旧表中的数据总量,以及旧表中存在,但是在新表中没有找到的数据
"""
# 校验数据总量是否一致
cmp_new_sql = "select count(*) from " + tb_new + ";"
cmp_old_sql = "select count(*) from " + tb_old + ";"
logging.debug(cmp_new_sql)
logging.debug(cmp_old_sql)
cursor_old = conn_old.cursor()
cursor_new = conn_new.cursor()
cursor_new.execute(cmp_new_sql)
cursor_old.execute(cmp_old_sql)
new_num = cursor_new.fetchone()
old_num = cursor_old.fetchone()
if new_num == old_num:
logging.info(tb_new + "和" + tb_old + "数据量相同:" + new_num)
else:
logging.error({tb_new + "_new": new_num[0], tb_old: old_num[0]})
# 校验各字段值是否一致
field_new = ", ".join(tb_field[0][0])
field_old = ", ".join(tb_field[0][1])
cmp_dt_new_sql = "select " + field_new + " from " + tb_new + ";"
cmp_dt_old_sql = "select " + field_old + " from " + tb_old + ";"
logging.debug(cmp_dt_new_sql)
logging.debug(cmp_dt_old_sql)
cursor_new.execute(cmp_dt_new_sql)
cursor_old.execute(cmp_dt_old_sql)
new_dt = cursor_new.fetchall()
old_dt = cursor_old.fetchall()
logging.debug(list(new_dt))
logging.debug(list(old_dt))
count = 0
for item in old_dt:
if item in new_dt:
pass
else:
logging.error(tb_new + "新表中未找到:" + str(item))
count += 1
logging.error("总数: %d" % count)
logging.error("\n\n")
# 关闭游标
cursor_old.close()
cursor_new.close()
return
# 测试表
test_table_field = [["field_new"], ["field_old"]]
db_diff("test_table", "test_table", test_table_field)
# 关闭数据库连接
conn_old.close()
conn_new.close()
python数据对比校验_Python对比数据库两张表是否一致相关推荐
- python两张表对比不同_Python对比数据库两张表是否一致
工作中我们经常需要对比数据库中两张表的数据是否有差异,以下代码通过pymsql对两张表的数据进行简单对比,可以记录新旧表的数据总数,以及两张表中有差异的数据. 应用场景:旧表中数据迁移到新表 运行结果 ...
- mysql不同服务器数据库查询_不同服务器不同数据库两张表连接查询使用经验
使用SQL语句连接查询位于两个不同的服务器不同的数据库中的两张表,最初将SQL语句写成以下形式select*fromProduct pinnerjoin opendatasource('SQLOLED ...
- python相似图片识别_Python+Opencv识别两张相似图片
Python+Opencv识别两张相似图片 在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话 ...
- python识别图片中数字_Python Opencv识别两张相似图片
在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在本文简 ...
- oracle两张表 比较好,比较Oracle两张表的数据是否一样
比较Oracle两张表的数据是否一样 爱搞机 2008-10-21 11:00 在某些情况下,我们会需要比较两张表的数据是否一样. 假设有两张表A与表B他的字段相同,但是当中的数据可能不同,而且有些字 ...
- mysql 去重主表数据,两张表结构相同数据(百万级别)
这里写自定义目录标题 mysql 去重主表数据,两张表结构相同数据(百万级别) 得到两张表的并集,查出主表在并集中出现的主键id 删除主表中重复的id,根据上面sql查出的数据 2.一部删除到位 my ...
- MySQL中对比两张表是否有不同数据
1.使用union all关联两张表,完事使用临时表或者说派生表的方式来进行数据对比. SELECT t1.pk, t1.c1 FROM t1 UNION ALL SELECT t2.pk, t2.c ...
- oracle 两表两列数据对比_【SQL】根据两列信息,整合两张表数据
两张表数据如下: --2017年 id college score A001 北京大学 670 A002 中国人民大学 646 A003 清华大学 664 A003 清华大学 (定向) ...
- Oracle 对比两张表的数据是否一致
使用 minus 关键字(minus:差别,缺少) 有两张表CHECK_CITY_1和CHECK_CITY_2,现在要互相对比一下,两个表数据的差异,(即A中有哪些B里没有,B中有哪些A中没有) se ...
最新文章
- C++ STL: lower_bound 和 upper_bound
- RTL设计推荐的各步骤 推荐工具 适合VHDL verilog
- python 模块与包
- MUI多端发布开发指南(终于把MUI的使用场景说清楚了)
- 分享在MVC3.0中使用jQuery DataTable 插件
- Flink架构及工作原理
- java获取ip地址不重复,如何在android(Java)中验证Ip地址[重复]
- Mybatis整合spring
- 电脑浏览器打不开html文档,电脑浏览器打不开本地html文件
- 斐讯n1刷linux配置wifi,斐讯N1刷CentOS7最简操作
- could not find driver (SQL: select * from information_schema.tables where table_schema = oliver and
- Git error : bad signature 0x00000000 fatal: index file corrupt
- android拷机工具,如何科学理解麒麟9000的拷机功耗?
- Amlogic 4K UI显示
- Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比
- 实时障碍更新 局部路径寻优算法 矢量地图数据 局部路径规划解集_自动驾驶近期行为预测和规划的一些文章介绍(下)...
- 黑马瑞吉外卖之菜品的启售停售
- gzip和gunzip
- modelsim脚本仿真(二)带quartus的IP核工程仿真
- [剑指Offer]Q9_栈和队列(用两个栈实现队列)
热门文章
- Unity中的混合光照
- 报错解决——ValueError: row index was 65536, not allowed by .xls format
- error An unexpected error occurred: “https://registry.npmjs.org/react: ETIMEDOUT“.
- 大数据基础数据之中国法定节假日API
- 码流、单码流、双码流、多码流
- 2021招银网络提前批笔试编程题C++
- Python 课程学习笔记(5)列表 [ ] lst
- 深度学习【注意力机制(Attention)原理和实现】
- Electron加密打包文件
- bandizip没有右键菜单解决办法