Python学习之二:不同数据库相同表是否相同的比较方法

Posted 济南小老虎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习之二:不同数据库相同表是否相同的比较方法相关的知识,希望对你有一定的参考价值。

摘要

昨天学习了使用python进行数据库主键异常的查看.
当时想我们有跨数据库的数据同步场景.
对应的我可以对不同数据库的相同表的核心字段进行对比.
这样的话能够极大的提高工作效率. 
我之前写过很长时间的shell.昨天跟着同事开始学python.
感觉的确用python能够节约大量的时间. 
生活中必须要挑战自己. 做更好的自己. 

思路

设置一个进行数据库连接构件的function.
先将基准数据查询出来放到一个基准的list 里面
然后设置一个循环. 循环内调用此function
然后循环内将数据取出, 对基准数据进行比较.
相同则输出数据数据库实例编号. is same.
不相同输出数据库实例实例编号. is different.

dbconnection function

# coding=utf-8
# 设置编码格式

import jaydebeapi
import configparser
import datetime
# 引入需要的包

config = configparser.ConfigParser()
# 定义配置对象
config.read(\'su.ini\',encoding=\'utf-8\')
def getconn(dbinstance) :
# 读取配置文件 形参传入信息
    jdbcString = config.get(dbinstance,\'jdbcString\')
    driverPath = config.get(dbinstance,\'driverPath\')
    urlString = config.get(dbinstance,\'urlString\')
    userName = config.get(dbinstance,\'userName\')
    passWord = config.get(dbinstance,\'passWord\')
    conn = jaydebeapi.connect(jdbcString,urlString,[userName,passWord],driverPath)
    return conn

dbcompare function

# coding=utf-8

import jaydebeapi
import configparser
import datetime
import dbconnection

conn = dbconnection.getconn(\'bf\')
getsql="select id,code from xxxuser  order by code "
cur = conn.cursor()
cur.execute(getsql)
usercode = cur.fetchall()

for i in [\'DB01\',\'DB02\',\'DB03\',\'DB04\',\'DB05\'] :
    conntest = dbconnection.getconn(i)
    curtest = conntest.cursor()
    curtest.execute(getsql)
    usercodetest = curtest.fetchall()
    print(str(i))
    if usercode == usercodetest:
        print("User Code is Same")
    else:
        print("User Code is Different")
for i in usercode :
    print(str(i[0]) + " " + str(i[1]))

JS学习之--比较两个Object数组是否相等

一、问题

  在js中是不能直接用“==”或者“===”来计算两个数组是否相等的,那么就需要对数组的值进行比较;

二、次解决方案

  对于比较两个数组次要的方法有如下几种,为什么说是次要解决方案呢?因为它不能真正称之为对两个数组的对比。

  1. 把两个数组转化为字符串的形式比较,如下:

  a. 当两个数组元素类型相同,顺序相同时,直接判断是否相等,结果不相等;转化为字符串后,结果相等;

var a=[1, 2, 3, 4];
var b = a.slice(); 
console.log(a);
console.log(b); 
console.log(a == b); console.log(JSON.stringify(a)
== JSON.stringify(b));

    运行结果:

    

 

 

   2.当两个数组元素类型不同,顺序相同时,用toString()转化为字符串,结果相等;用stringify转化为字符串,结果不相等; 

var a=[1, 2, 3, 4]; 
var b = [\'1\', 2, 3, 4]; 
console.log(a); 
console.log(b); 
console.log(a.toString() == b.toString()); console.log(JSON.stringify(a)
== JSON.stringify(b));

    运行结果如下:

    

 

 

  3. 当两个数组不相同时,先排序,再转化为Json字符串比较,结果相等:

var a = [1, 2, 3, 4]; 
var b = [4, 2, 3, 1]; 
console.log(a.sort()); 
console.log(b.sort());
console.log(JSON.stringify(a.sort()) == JSON.stringify(b.sort()));

    运行结果:

    

 

 

   4.当数组包含Object时,先排序,再进行比较,结果相等:

var a=[{"x":"abc"}, 2, 3, 4]; 
var b = [4, 2, 3, {"x":"abc"}]; 
console.log(a.sort()); 
console.log(b.sort()); console.log(JSON.stringify(a.sort()) == JSON.stringify(b.sort()));

    运行结果:

    

 

 

   从以上可以看出:  

    1. 如果两个数组元素类型相同,顺序相同时,用stringify转化为字符串后进行比较;

    2. 如果两个数组元素类型相同,顺序不相同时,排序后,用stringify转化为字符串再进行比较;

    3.两个数组元素类型不同时,用stringify转化为字符串后进行比较,数组不相等;用toString()转化为字符串后进行比较,数组相等;

三、 解决方案

  比较两个数组是否相等,实质上是比较两相数组的原型是否相等,代码如下:

  

以上是关于Python学习之二:不同数据库相同表是否相同的比较方法的主要内容,如果未能解决你的问题,请参考以下文章

java学习之treeset

python学习之数组二

JS学习之--比较两个Object数组是否相等

Python学习之高级数组

机器学习之sklearn数据集

Scala学习之相同的函数名