栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python-sql查询结果数据对比

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python-sql查询结果数据对比

查询sql结果根据主键拼装,然后源数据与目标数据对比

    def comp_data_by_same_key(self,source_data,target_data,source_key,target_key):
        print("数据源A:%s n数据源B:%s n数据源A、B的主键:%s:%s" %(source_data,target_data,source_key,target_key))
        self.check_diff_key_record(source_data,target_data)
        self.check_diff_field(source_data,target_data)
        print("开始比较主键相同的数据")
        diff_val = {}
        for k1, v1 in source_data.items():
            try:
                v2 = target_data[k1]
                # 找出相同的字段名对比数据
                same_key = v1.keys() & v2.keys()
                diff_list = []
                for key in same_key:
                    # print("对比值:%s:%s" %(str(v1[key]),str(v2[key])))
                    if str(v1[key]) == str(v2[key]):
                        # print("相同的值")
                        # print(str(v1[key]), str(v2[key]))
                        continue
                    else:
                        # 找出字段名一致,值不一致的数据
                        # print("不同的值---------")
                        # print(str(v1[key]), str(v2[key]))
                        diff = [key, v1[key], v2[key]]
                    # 判断diff是否存在,若存在,以primary_key为key存进字典
                    if 'diff' in vars():
                        # diff_val[k1] = diff
                        diff_list.append(diff)
                    diff_val[k1] = diff_list
            except KeyError as e:
                print("keyerror:%s" % e)
                continue
        print("有%s个主键的值不一致: 主键名:数据源A:数据源B" % len(diff_val))
        # print(diff_val)
        for k, v in diff_val.items():
            print("%s:%s" % (k, v))
        if len(diff_val) == 0:
            return True
        else:
            return False

    def check_diff_key_record(self,source_data,target_data):
        print("数据源A和B的条数差为:%s, 数据源A记录条数:%s === 数据源B记录条数:%s n" % ((len(source_data)-len(target_data)),len(source_data), len(target_data)))
        print("数据源A独有的数据条数:%s n 数据: %s" %(len(source_data.keys() - target_data.keys()),(source_data.keys() - target_data.keys())))
        print("数据源B独有的数据条数:%s n 数据: %s" %(len(target_data.keys() - source_data.keys()),(target_data.keys() - source_data.keys())))
    
    def check_diff_field(self,source_data,target_data):
        print("只有数据源A有的字段:%s" % (list(source_data.values())[0].keys() - list(target_data.values())[0].keys()))
        print("只有数据源B有的字段:%s" % (list(target_data.values())[0].keys() - list(source_data.values())[0].keys()))
        print("数据源A和B不能匹配的字段:")
        print(list(source_data.values())[0].keys() ^ list(target_data.values())[0].keys())

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976964.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号