Python(33):数据断言(查询数据库数据和插入数据对比)

news2024/11/16 19:03:03

Python(33):数据断言(查询数据库数据和插入数据对比)

前言:

需求:需要针对查询数据库数据和插入的数据进行对比,用Python语言进行编写

数据库查询的结果可参考:https://blog.csdn.net/fen_fen/article/details/135462484

1、查询结果数据示例

#查询结果
result_list = [{'ID': 181, 'AES': 'HMF', 'SM4': '北京XXX技术有限公司', 'SM4_A': '北京市朝阳区明天第一城6-901', 'EMAIL': 'hmf@yahoo.com', 'PHONE': '15652996964', 'SSN': '110103201206200910', 'MILITARY': '武水电字第3632734号', 'PASSPORT': 'BWP018930705', 'INTELSSN': '110103201206200910', 'INTELPASSPORT': 'BWP018930705', 'INTELMILITARY': '武水电字第3632734号', 'INTELGANGHUI': 'H21157232', 'INTELTAITONEI': '9839487602', 'CREDIT_CARD_SHORT': '117', 'CREDIT_CARD_LONG': '6212262502009182455', 'JOB': '测试开发工程师', 'SM4_CBC': '北京XXX技术有限公司', 'SM4_A_CBC': '产品研发部'}]

#插入的数据转换成字典,例子

dict_input ={'AES': 'HMF', 'SM4': '北京XXX技术有限公司', 'SM4_A': '北京市朝阳区明天第一城6-901', 'EMAIL': 'hmf@yahoo.com', 'PHONE': '15652996964', 'SSN': '110103201206200910', 'MILITARY': '武水电字第3632734号', 'PASSPORT': 'BWP018930705', 'INTELSSN': '110103201206200910', 'INTELPASSPORT': 'BWP018930705', 'INTELMILITARY': '武水电字第3632734号', 'INTELGANGHUI': 'H21157232', 'INTELTAITONEI': '9839487602', 'CREDIT_CARD_SHORT': '117', 'CREDIT_CARD_LONG': '6212262502009182455', 'JOB': '测试开发工程师', 'SM4_CBC': '北京XXX技术有限公司', 'SM4_A_CBC': '产品研发部'}

2、python编写的对比代码示例

2.1、dbassert.py

#_*_coding:utf-8_*_


def assert_plain_data(result_list, dict_input):
    count = 0
    for item in result_list:
        for key in item:
            if key != "ID":
                for key_input in dict_input:
                    # print(key)
                    # print(key_input)
                    if key == key_input:
                        # print(mapInput[key_input])
                        if item[key] == dict_input[key_input]:
                            count += 1
    return count


def assert_cipher_data(result_list,cipher):
    count = 0
    for item in result_list:
        for key in item:
            if key != "ID":
                if item[key].endswith(cipher):
                    count += 1
    return count

2.2、调用

result_list = [{'ID': 181, 'AES': 'HMF', 'SM4': '北京XXX技术有限公司', 'SM4_A': '北京市朝阳区明天第一城6-901', 'EMAIL': 'hmf@yahoo.com', 'PHONE': '15652996964', 'SSN': '110103201206200910', 'MILITARY': '武水电字第3632734号', 'PASSPORT': 'BWP018930705', 'INTELSSN': '110103201206200910', 'INTELPASSPORT': 'BWP018930705', 'INTELMILITARY': '武水电字第3632734号', 'INTELGANGHUI': 'H21157232', 'INTELTAITONEI': '9839487602', 'CREDIT_CARD_SHORT': '117', 'CREDIT_CARD_LONG': '6212262502009182455', 'JOB': '测试开发工程师', 'SM4_CBC': '北京XXX技术有限公司', 'SM4_A_CBC': '产品研发部'}]
dict_input ={'AES': 'HMF', 'SM4': '北京XXX技术有限公司', 'SM4_A': '北京市朝阳区明天第一城6-901', 'EMAIL': 'hmf@yahoo.com', 'PHONE': '15652996964', 'SSN': '110103201206200910', 'MILITARY': '武水电字第3632734号', 'PASSPORT': 'BWP018930705', 'INTELSSN': '110103201206200910', 'INTELPASSPORT': 'BWP018930705', 'INTELMILITARY': '武水电字第3632734号', 'INTELGANGHUI': 'H21157232', 'INTELTAITONEI': '9839487602', 'CREDIT_CARD_SHORT': '117', 'CREDIT_CARD_LONG': '6212262502009182455', 'JOB': '测试开发工程师', 'SM4_CBC': '北京XXX技术有限公司', 'SM4_A_CBC': '产品研发部'}

num = assert_plain_data(result_list,dict_input)
print(num)

result_list2 = [{'ID': 181, 'AES': 'HMF|^|', 'SM4': '北京XXX技术有限公司', 'SM4_A': '北京市朝阳区明天第一城6-901', 'EMAIL': 'hmf@yahoo.com', 'PHONE': '15652996964', 'SSN': '110103201206200910', 'MILITARY': '武水电字第3632734号', 'PASSPORT': 'BWP018930705', 'INTELSSN': '110103201206200910', 'INTELPASSPORT': 'BWP018930705', 'INTELMILITARY': '武水电字第3632734号', 'INTELGANGHUI': 'H21157232', 'INTELTAITONEI': '9839487602', 'CREDIT_CARD_SHORT': '117', 'CREDIT_CARD_LONG': '6212262502009182455', 'JOB': '测试开发工程师', 'SM4_CBC': '北京XXX技术有限公司', 'SM4_A_CBC': '产品研发部'}]
count =assert_cipher_data(result_list2,"|^|")
print(count)

2.3、执行结果

最后再用unittest的断言进行判断数量是否一致

assertEqual(self, first, second, msg=None)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1369025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java解析json复杂数据的两种思路

文章目录 一、原始需求二、简单分析三、具体实现一1. api接口2. 接口返回3. json 数据解析1.)引入Jackson库2.)定义实体3.)解析json字符串4.)运行结果 4. 过程分析 四、具体实现二1. 核心代码2.运行结果 五、方案比较六、源码传送…

Python 自学(七) 之面向对象

目录 1. 类的初始化函数 __init__ P186 2. 动态的为类和对象添加属性 P190 3. 类的访问限制 __xxx P192 4. 类的继承及方法重写 P197 1. 类的初始化函数 __init__ P186 每当创建一个类的实例时,__init__都会被执…

C#高级 10 Linq操作

1.Linq操作介绍 Linq操作是C#集成的类似于数据库语言的操作,是通过将数据库的表名映射为类,把数据库的列名映射为属性。 Linq查询主要分为3类:Linq to object(数组、list集合) --内存里面的数据 Linq to sql(查询数据库用的) --在数据库数据…

告别冗余空白,批量删除空白行

你是否遇到过这样的尴尬情况:花费了大量时间整理的文档,却在最后发现其中充斥着无用的空白行,这些多余的空行不仅影响美观,还让整个文档显得杂乱无章。今天,我要给大家介绍一款强大且实用的工具——首助编辑高手&#…

Go采集1688网站数据对比商品价格

最近看了下多多和1688的一些商品价格,发现好多店铺都是无货源拿货一件发货,这就导致层层叠加价格翻了不知道几倍,真所谓多花钱办的事还是一样,因此,今天我就通过一个爬虫程序监控对应商品价格,了解行业龙头…

Java 最小优先队列API设计与实现

Java 学习面试指南:https://javaxiaobear.cn 最小的元素放在数组的索引1处。每个结点的数据总是小于等于它的两个子结点的数据。 1、API设计 类名MinPriorityQueue构造方法MinPriorityQueue(int capacity):创建容量为capacity的MinPriorityQueue对象成员…

Oracle11.2.0.4从RMAN备份中快速恢复单个表的方法

文章目录 前言一、查询所要恢复的表所涉及的表空间二、创建用于恢复的数据库三、恢复步骤1.恢复控制文件2.修改redo日志名称3.表空间恢复4.表空间recover5.查询数据 前言 由于用户误操作导致某表中的数据错乱,导致业务不能正常使用,现需要将该表恢复到一…

国家数据局——《“数据要素×”三年行动计划(2024—2026年)》

为深入贯彻党的二十大和中央经济工作会议精神,充分发挥数据要素乘数效应,赋能经济社会发展,近日,国家数据局会同中央网信办、科技部、工业和信息化部、交通运输部、等部门联合印发《“数据要素”三年行动计划(2024—20…

VS中打开ui文件闪退

解决办法: 依次点击《扩展》-> 《Qt vs tools》-> 《options》-> 《Qt》-> 《general》 -> 《Qt Designer》 -> 《run in detached window》 -> true

Swift单元测试Quick+Nimble

文章目录 使用QuickNimble1、苹果官方测试框架XCTest的优缺点2、选择QuickNimble的原因:3、QuickNimble使用介绍集成:Quick关键字说明:Nimble中的匹配函数等值判断:使用equal函数是否是同一个对象:使用beIdenticalTo函…

java智慧医院互联网智慧3D导诊系统源码,经由智慧导诊系统多维度计算,准确推荐科室

什么是智慧导诊系统? 简单地说,智慧导诊系统是一种利用人工智能技术,为医生提供帮助的系统。它可以通过分析患者的症状和病史为医生提供疾病诊断和治疗方案的建议。 系统介绍: 医院智慧导诊系统是在医院中使用的引导患者自助就诊挂号&…

Python单继承,子类调用父类方法,使用super关键字

但是这么写话还是并不符合我们平时写代码的规范,一般都是用super来调用,贴代码: # 面向对象的3大特征:继承性,封装性,多态性 class Human():sum1 0def __init__(self, name, age):self.name nameself.ag…

机器学习指南:如何学习机器学习?

机器学习 一、介绍 你有没有想过计算机是如何从数据中学习和变得更聪明的?这就是机器学习 (ML) 的魔力!这就像计算机科学和统计学的酷炫组合,计算机从大量信息中学习以解决问题并做出预测,就像人类一样。 …

前端国际化之痛点(二):多包多库场景下联动多语言

前言 VoerkaI18n是一款非常优秀的前端国际化解决方案,其开发的出发点是为了解决现存多语言的一些痛点,接下来几篇文章将分别进行分析。 前端国际化之痛点(一):让人头疼的词条Key前端国际化之痛点(二):多包多库场景下联动多语言前端国际化之…

JavaScript数组sort()对负数排序的陷阱

前言 想着好久没去力扣刷题了,刚好手上的需求也差不多了,就去看了看。看到一个难度级别为困难的题,看到这个题想着直接使用JS现成的方法,先concat再sort。再取中间值不就实现了吗。是不是你们也这么想,哈哈哈。 就是…

人逢三六九,运势低迷路难走

很多人都希望自己各方面的运势都能够朝着好的方向旺盛发展,我们的运势将会如何发展跟我们的出生时间是离不开关系的。我们的祖先为了后人着想,不犯他们犯过的错误,少走一些弯路,总结了多年来的生活经验,创造出了一句句…

Unity3d 实现直播功能(无需sdk接入)

Unity3d 实现直播功能 需要插件 :VideoCapture 插件地址(免费的就行) 原理:客户端通过 VideoCapture 插件实现推流nodejs视频流转服务进行转发,播放器实现rtmp拉流 废话不多说,直接上 CaptureSource我选择的是屏幕录制,也可以是其他源 CaptureType选择LIVE–直播形式 LiveSt…

【面试高频算法解析】算法练习2 回溯(Backtracking)

前言 本专栏旨在通过分类学习算法,使您能够牢固掌握不同算法的理论要点。通过策略性地练习精选的经典题目,帮助您深度理解每种算法,避免出现刷了很多算法题,还是一知半解的状态 专栏导航 二分查找回溯(Backtracking&…

苹果QQ群聊天记录怎么删除?收藏好这两个技巧!

无论我们使用什么手机,我们都可以在QQ上与好友进行交流和社交。然而,有时候我们可能需要删除一些不需要的聊天记录,特别是群聊记录,以此来扩大手机内存。那么,苹果手机的qq群聊天记录怎么删除呢?小编将为大…

电子学会C/C++编程等级考试2023年12月(一级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:数的输入和输出 输入一个整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数。 时间限制:1000 内存限制:65536 输入 一行两个数,分别为整数N(不超过整型范围),双精度浮点数F,以一个空格分开。 输出 一行两个数,分…