Python 数据库之间差异对比
#!/home/dba/.pyenv/versions/3.5.2/bin/python
#coding=utf-8
import cx_Oracle
import time
import difflib
import os
def __init__(self,username,password,tns):
try:
self.db = cx_Oracle.connect(username,password,tns)
self.cursor = self.db.cursor()
except Exception as e:
print('Wrong')
print(e)
def schemas_tables_count(self,sql,db):
try:
self.cursor.execute(sql)
v_result=self.cursor.fetchall()
#print(v_result)
count = 0
for i in range(len(v_result)):
#print(v_result[i][1],'--',v_result[i][0])
count = int(v_result[i][0]) + count
print(db,'Count Tables','--',count)
except Exception as e:
print('Wrong--schemas_tables_count()')
print(e)
def schemas_tables_list(self,sql):
try:
self.cursor.execute(sql)
v_result=self.cursor.fetchall()
#print(v_result)
return v_result
except Exception as e:
print('Wrong--schemas_tables_list()')
print(e)
def schemas_tables_columns_list(self,sql,data):
try:
self.cursor.execute(sql,A=data)
v_result=self.cursor.fetchall()
return v_result
except Exception as e:
print('schemas_tables_columns_list')
print(e)
def schemas_tables_indexes_list(self,sql,data):
try:
self.cursor.execute(sql,A=data)
v_result=self.cursor.fetchall()
return v_result
except Exception as e:
print('schemas_tables_indexes_list')
print(e)
def close(self):
self.db.close()
schemas_tables_list_sql = "SELECT S.OWNER||'.'||S.TABLE_NAME FROM DBA_TABLES S WHERE S.OWNER in ('PAY','BOSS','SETTLE','ISMP','TEMP_DSF','ACCOUNT')"
schemas_tables_columns_sql = "select a.OWNER||'.'||a.TABLE_NAME||'.'||a.COLUMN_NAME||'.'||a.DATA_TYPE||'.'||a.DATA_LENGTH from dba_tab_columns a where a.OWNER||'.'||a.TABLE_NAME = :A"
schemas_tables_indexes_sql = "SELECT T.table_owner||'.'||T.table_name||'.'||T.index_name FROM DBA_INDEXES T WHERE T.table_owner||'.'||T.table_name = :A"
pro_db = Oracle_Status_Output('dbadmin','QazWsx12','localhost:1521/paydb')
pro_db.schemas_tables_count(schemas_tables_count_sql,'PRO')
pro_schemas_tables = pro_db.schemas_tables_list(schemas_tables_list_sql)
#print(pro_schemas_tables)
if listA !=[] and listB !=[]:
#listD = list(set(listA).union(set(listB)))
listC = sorted(list(set(listA).intersection(set(listB))))
listAC = sorted(list(set(listA).difference(set(listC))))
listBC = sorted(list(set(listB).difference(set(listC))))
#if sorted(listD) == sorted(listC):
# print('All Tables OK')
if listC == []:
#print('JX ',listClass,':',listA)
#print('PRO ',listClass,':',listB)
print('Intersection>>','JX ',listClass,':',listAC,'--->','PRO',listClass,':',listBC)
elif listAC != [] or listBC != []:
print('Difference >>','JX ',listClass,':',listAC,'--->','PRO',listClass,':',listBC)
else:
pass
return listC
if __name__ == '__main__':
#diff_jx_pro(jx_schemas_tables,pro_schemas_tables)
for i in range(len(tables_lists)):
table_name = "".join(tuple(tables_lists[i]))
#print(table_name)
jx_schemas_tables_columns = jx_db.schemas_tables_columns_list(schemas_tables_columns_sql,table_name)
pro_schemas_tables_columns = pro_db.schemas_tables_columns_list(schemas_tables_columns_sql,table_name)
diff_jx_pro(jx_schemas_tables_columns,pro_schemas_tables_columns,'Columns')
table_name = "".join(tuple(tables_lists[i]))
#print(table_name)
jx_schemas_tables_indexes = jx_db.schemas_tables_indexes_list(schemas_tables_indexes_sql,table_name)
pro_schemas_tables_indexes = pro_db.schemas_tables_indexes_list(schemas_tables_indexes_sql,table_name)
diff_jx_pro(jx_schemas_tables_indexes,pro_schemas_tables_indexes,'Indexes')
jx_db.close()
pro_db.close()
print('------------Table, column and index check completed--------------')
Python 数据库之间差异对比的更多相关文章
- Python自动化运维——文件内容差异对比
Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:difflib 安装:Python版本大于等于2.3系统自带 功能:对比文本之间的差异,而且支持输出可读性比 ...
- 技术分享|SQL和 NoSQL数据库之间的差异:MySQL(VS)MongoDB
在当今市场上,存在各种类型的数据库,选择适合你业务类型的数据库对应用的开发和维护有着重要意义.本篇文章,将为大家分享SQL和NoSQL语言之间的区别,同时还将比较这两种类型的数据库,以帮助小伙伴们选择 ...
- Atitit 硬件 软件 的开源工作 差异对比
Atitit 硬件 软件 的开源工作 差异对比 1.1. 模块化,标准化,以及修改的便捷性1 1.2. 生产和发布成本 1 1.3. 3. 入行门槛搞2 1.4. 在软件业极度发达的今天,任何具 ...
- Python六大开源框架对比:Web2py略胜一筹
Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还自带 ...
- Python六大开源框架对比:Web2py略胜一筹(转)
Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还自带 ...
- 从商用到开源:15个维度,全面剖析DB2与MySQL数据库的差异
随着MySQL数据库的应用越来越广泛,DB2向MySQL数据库的迁移需求也越来越多.进行数据库之间迁移的时候,首先遇到的并且也是最基本最重要的就是两种数据库数据类型之间的转换. 相关阅读: 从商用到开 ...
- ORACLE如何比较两个数据库的差异
ORACLE怎么比较两个数据库的差异 方法1:使用PL-SQL工具 点击 工具->比较用户对象
- python数据库(mysql)操作
一.软件环境 python环境默认安装了sqlite3,如果需要使用sqlite3我们直接可以在python代码模块的顶部使用import sqlite3来导入该模块.本篇文章我是记录了python操 ...
- python数据库操作之pymysql模块和sqlalchemy模块(项目必备)
pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1.下载安装 pip3 install pymysql 2.操作数据库 (1).执行sql #! ...
随机推荐
- 【Map】Echarts之iphone销量地图的使用以及详细配置
1.引入echarts库文件 <script charset="utf-8" type="text/javascript" language=" ...
- Linux下指定pip install和make install安装路径
在Linux下直接用pip install packageName,有些文件会被放到根目录下,如果没有sudo权限的话,是会安装失败的.这个以后我们就需要指定安装的目录了. pip install - ...
- 用 SwitchHosts设置hotst, 用法示例
涉及到本地默认ip(localhost,127.0.0.1)设置关联地址时,使用XAMPP本地服务器时避免自动跳转设置的域名的一些处理方法 打开此文件,把内容修改如下 # Virtual Hosts# ...
- window 环境下jdbc访问启用kerberos的impala
最近,公司生产集群添加kerberos安全认证后,访问集群的任何组件都需要进行认证,这样问题来了,对于impala,未配置kerberos安全认证之前通过impala的jdbc驱动(impala-jd ...
- java中年月日的加减法,年月的加减法使用
本文为博主原创,未经允许不得转载: java计算两个年月日之间相差的天数: public static int daysBetween(String smdate,String bdate) thro ...
- css未知宽高的盒子div居中的多种方法
不知道盒子大小.宽高时,如何让盒子上下左右居中? 应用场景:比如上传图片时,并不知道图片的大小,但要求图片显示在某盒子的正中央. 方法1:让4周的拉力均匀-常用 <!-- Author: Xia ...
- Quartz.NET简介及入门指南
Quartz.NET简介 Quartz.NET是一个功能完备的开源调度系统,从最小的应用到大规模的企业系统皆可适用. Quartz.NET是一个纯净的用C#语言编写的.NET类库,是对非常流行的JAV ...
- 样本打散后计算单特征 NDCG
单特征 NDCG 能计算模型的 NDCG,也就能计算单特征的 NDCG,用于评估单特征的有效性,跟 Group AUC 用途一样 单特征 NDCG 如何衡量好坏 如果是 AUC,越大于或小于 0.5, ...
- ubuntu14.04(server amd64)免密码sudo
vi /etc/sudoers.d/nopasswd4sudo 加入以下内容 用户名 ALL=(ALL) NOPASSWD : ALL
- Springboot 学习笔记 之 Day 4 笔记部分
spring-boot-starter 核心Spring Boot starter,包括自动配置支持,日志和YAMLspring-boot-starter-actuator 生产准备的特性,用于帮你监 ...