zoukankan      html  css  js  c++  java
  • Python 进行 Oracle 与 Mysql 不同数据库类型之间的数据 diff

    分享主题:如何利用Python 进行 Oracle 与 Mysql 不同数据库类型之间的数据 diff

    一、适用场景

    项目工作中,可能会有 A 类型数据库数据需要迁移到 B 类型的数据库中的需求。例如:假设现有一个数据库的迁移需求,是将 Oracle 数据库里的数据迁移至 Mysql 数据库中。常规的测试方法是人工去抽样检测数据进行 diff,因为数据量太大,人工不可能实现全量数据的肉眼 diff。

    因此,为提高数据 diff 的正确性以及测试效率,编写测试脚本进行全量迁移数据的 diff 是十分必要的。以下内容将会着重讲解如何使用 Python 编写脚本来实现 Oracle 与 Mysql 这种不同类型数据库之间数据的 diff。

    二、代码实现

    1、连接oracle数据库并获取要提取的数据,并输出列表里面嵌入的字典类型的数据

     1#coding=utf-8
     2import cx_Oracle
     3import pymysql
     4
     5
     6def get_oracle():
     7    conn = cx_Oracle.connect('user''123456''10.7.51.34:1521/server')
     8    cursor=conn.cursor()
     9
    10    sql="SELECT NAME_CODE as id ,INDUSTRY_CODE as certificate_no FROM NAME_20201129 WHERE NAME_ID=1"
    11    resList1=cursor.execute(sql).fetchall()
    12    # print(resList1)
    13    columns=[c[0] for c in cursor.description]
    14    # print(columns)
    15    lastlist=[]
    16    for res in resList1:
    17        resluts=dict(zip(columns,res))
    18        lastlist.append(resluts)
    19    print(lastlist)
    20    cursor.close

    2、连接mysql数据库并获取要提取的数据,并输出列表里面嵌入的字典类型的数据

     1def get_mysql():
     2    db = pymysql.connect("10.7.36.42""root""123456""test")
     3    cursor = db.cursor()
     4    sql="select id,certificate_no from test.ticket where id=1"
     5    try:
     6        resultList = []
     7        cursor.execute(sql)
     8        result = cursor.fetchall()
     9        columns = cursor.description
    10        for val in result:
    11            tempDict = {}
    12            for cloNum in range(len(columns)):
    13                tempDict[str(columns[cloNum][0]).upper()] = str(val[cloNum]).upper()
    14            resultList.append(tempDict)
    15        print(resultList)
    16        return resultList
    17    except:
    18        print("Error: unable to fetch data")
    19    cursor.close()
    20    db.close()

    3、Oracle 与 Mysql 数据库进行 diff,直接调用上面两个方法即可

    1if __name__ == '__main__':
    2    get_mysql()
    3    get_oracle()

    4、执行后的输出结果

    1[{'ID''82''CERTIFICATE_NO''1CS004398439896'}]
    2[{'ID''CO300006484390''CERTIFICATE_NO''CON'}]

    三、总结

    以上代码只是做了一个 diff 的雏形演示,希望能给小伙伴起到抛砖引玉的效果,大家在参考时可以根据自己的需求去做更符合业务场景的 diff 验证。

    今天分享的内容实操性比较强,Python 实现代码都是干货,建议动手实操更有助于加深理解哟~

    欢迎关注【无量测试之道】公众号,回复【领取资源】
    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、

    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

     

    添加关注,让我们一起共同成长!

  • 相关阅读:
    python3-返回函数
    python3-sorted
    python3-filter
    学习笔记134—word里如何在□里打√!框框里打勾!!!!!
    学习笔记133—型号最全的海信电视root教程及root工具下载
    学习笔记132—英文写作n个细节注意事项
    学习笔记131— Manuals for Tencent meeting (english)
    学习笔记130— 解决No module named 'sklearn.cross_validation'
    学习笔记129—电脑其他声音都正常,只有网易云音乐突然没声音了 急死人
    学习笔记128—PS 不改变像素的情况下,变换照片内存大小
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/14596414.html
Copyright © 2011-2022 走看看