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

python,学习,之二,不同,数据库,相同,是否,比较,方法 · 浏览次数 : 36

小编点评

```python import jaydebeapi import configparser import datetime import dbconnection 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 def getsql(self): return "select id,code from xxxuser order by code" def main(): # 设置数据库连接配置 config = configparser.ConfigParser() config.read('su.ini', encoding='utf-8') # 获取基础数据连接 conn = getconn('bf') # 执行查询,获取所有用户代码 usercode = [] for i in ['DB01', 'DB02', 'DB03', 'DB04', 'DB05']: conntest = getconn(i) curtest = conntest.cursor() curtest.execute(getsql()) usercode.extend(curtest.fetchall()) # 打印用户代码是否相同 for i in usercode: print(str(i[0]) + " " + str(i[1])) # 关闭数据库连接 conn.close() if __name__ == "__main__": main() ```

正文

摘要

昨天学习了使用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]))

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

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

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

Oracle AWR学习之二-利用ChatGPT编写一键获取AWR报告的脚本

# Oracle AWR学习之二-ChatGPT提升效率之n ## 背景 ``` 之前生成awr报告比较麻烦, 想着能够一键生成. 再辅以部分shell或者是python处理就可以进行细致的分析. 这一块其实还是比较简单的, 在ChatGPT加持下的确能够极大的提高自己的工作效率. 但是怀疑国内的学

Python学习之三: 编译二进制

Python学习之三: 编译二进制 摘要 每次使用python 执行py文件其实是比较麻烦的 主要是还得安装python的虚拟机,以及安装对应的pip包. 感觉比较繁杂 理论上最快捷的方式是编译成 二进制直接运行. 所以这里主要是说一下通过pycharm和linux机器进行二进制编译的过程 Pych

Python学习之四_部分battery的学习

Python学习之四_部分battery的学习 CentOS升级pip的方法 yum install python3 之后, 一般centos的版本都很低, 有时候很多module 是无法安装的. 一般可以通过他进行升级: pip3 install -U pip 注意如果无法升级, 可以先这样处理

Python学习之五_字符串处理生成查询SQL

Python学习之五_字符串处理生成查询SQL 前言 昨天想给同事讲解一下获取查询部分表核心列信息的SQL方法 也写好了一个简单文档. 但是感觉不是很优雅. 最近两三天晚上一直在学习Python. 想将昨天的文档处理成一个工具的方式. 将查询SQL展示出来. 然后再由同事手工检查确认. 增加时间范围

Python学习之六_同时访问Oracle和Mysql的方法

Python学习之六_同时访问Oracle和Mysql的方法 背景 jaydebeapi 可以访问大部分数据库. 但是他有一个问题是仅能够访问一种类型的数据库. 如果同事连接两种数据库,那么就会出现问题 会有如下的提示: TypeError: Class com.mysql.cj.jdbc.Driv

Python学习之七_input和print

Python学习之七_input和print 摘要 python3 之后 函数必须带 () 了 因为我开始学习的比较晚, 所以准备Python3开始学起 前面主要是模仿别人的代码进行学习 后续慢慢学习 使用python调用ebpf等内容. 这里简单先总结一下input和print的函数. 作为一个学

Python学习之八_调用Outlook发送邮件以及调用远程windows上面的python

Python学习之八_调用Outlook发送邮件以及调用远程windows上面的python 摘要 之前只有一个需求是发送加密邮件. 之前一直是使用linux进行发送.但是总是无法发送加密邮件. 最近学习python, 发现可以使用 python来调用outlook来发送邮件. 这样就比较简单了.

Python学习之九_winrm执行远程机器的cmd命令

Python学习之九_winrm执行远程机器的cmd命令 winrm # 注意如下命令需要按照顺序执行. # 打开powershell的管理员模式进行如下的操作. set-executionpolicy remotesigned winrm quickconfig winrm set winrm/c

Python学习之十_paramiko的简单学习

Python学习之十_paramiko的简单学习 简介 pywinrm 是python用于连接访问windows的工具 paramiko 是python用于连接访问linux的工具 ansible等工具很多也是基于类似的组件进行的处理 连接不同的系统进行命令行的操作. paramiko的简介 par