基于Python探查Mysql数据库,输出数据质量报告
Posted 不吃西红柿丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Python探查Mysql数据库,输出数据质量报告相关的知识,希望对你有一定的参考价值。
点赞 ➕ 评论 ➕ 收藏 = 三连再看你最帅
目录
🍅 联系作者: 不吃西红柿
🍅 作者简介:CSDN 博客专家丨全站 Top 8🏆、HDZ 核心组成员、信息技术智库公号号主
🍅 简历模板、PPT 模板、学习资料、技术互助。关注我,都给你
很多人看西红柿的博客,不知道从何学起,为了广大人民群众的根本利益,我写了一个阅读指引,按照这个指引进行学习,多加练习,假以时日,势必能够……算了
学习路径指引 | 定位 | 适宜人群 |
---|---|---|
全网最全丨 Python 快速入门专栏 | 入门级 | 没有语言基础,感兴趣的大学生 |
全网最黑丨 Python 黑科技专栏 | 黑科技级 | 有一定的基础,学以致用 |
大数据知识体系丨集锦专栏 | 工作/就业 | 大数据领域从业者,就业升职加薪 |
信息技术智库社区 | 吹水/互助 | 互联网相关人员,白嫖奖品丨官方活动 |
🐶一、环境准备
-
硬件环境: mac
-
软件环境: python 3.8
在学习本文前,请大家先安装 pymysql。
-
方法1:pip install pymysql
-
方法2:pycharm 安装方法
-
方法3:git 安装 如果你的系统不支持 pip 命令,使用 git 命令下载安装包安装(你也可以手动下载):
git clone https://github.com/PyMySQL/PyMySQL
cd PyMySQL/
python3 setup.py install
🐱二、学习目标
通过本文,你可以学会:基于Python探查Mysql数据库,出数据质量报告
事情是这样的,领导安排一个活,详细探查xx公司的数据治理,包括数据源,数据流,数据质量。
PS.人力整理的话,工作量非常巨大,且存在人为失误。
我一想,数据探查不就是看这些指标:
表名,列名,空值数量,总数据量,空值率,字符类型,字段长度,备注,主键,权限
既如此,何不用python? 于是乎,奋笔疾书!
🐭三、知识储备
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中是使用mysqldb。
连接数据库前,请先确认以下事项:
-
您已经创建了数据库,数据表
-
已经安装了 Python MySQLdb 模块。
3.1 数据获取
Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
-
fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
-
fetchall(): 接收全部的返回结果行.
-
rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
3.2 事务特性
在操作mysql时,注意mysql的事务特性。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
-
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
-
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
-
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
-
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
所以,你可以对已经执行的sql,进行 commit 或 rollback。
🐰四、代码实现
为了让更多有数据处理需求的小伙伴,高效搞定工作,我的代码都完整开源(公种号:信息技术智库,回复【源码】)。当然,有提升的地方,希望小伙伴在评论区指指点点。
代码大致分为4个部分:
4.1 导包
#coding=utf-8
from __future__ import division
import os,openpyxl,pymysql as MySQL
4.2 连接数据库
连接数据库前,请先确认以下事项:
-
您已经创建了数据库
-
在你的机子上已经安装了 Python MySQLdb 模块。
print("开始连接ing")
try:
conn=MySQL.connect(host="127.0.0.1",port=3306,user="root",passwd="root",db="tomato",charset='utf8')
#charset解决字符乱码
except:
print("连接失败!")
cur = conn.cursor()
print("连接成功!!!")
4.3 数据探查
不仅是mysql,在其它数据库,也可类似实现。
代码原理: 利用mysql元数据表,进行快速统计。
#公众号:信息技术智库
#tab=['xxxxxx','bbbbbb'] #指定探索的表名,或直接查全部
tab=[]
if len(tab)==0 :
quary="""show tables; """
ret=cur.execute(quary)
ret=cur.fetchall() #结果是二层tuple
for i in ret:
tab.append(i[0])
print('表数量: %s'%len(tab))
print('表list: %s'%tab)
else:
pass
m=1
result=[]
result.append(['表名','列名','空值数量','总数据量','空值率','字符类型','字段长度','备注','主键','权限'])
for i in tab:
if m==100:
break
print(i)
print("第" + str(m) + "个表")
quary1="select count(*) from %s"%i
retsc=cur.execute(quary1)
retsc=cur.fetchall()
quary2='''select COLUMN_NAME from Information_schema.columns where table_Name = '%s';'''%i
ret1=cur.execute(quary2)
ret1=cur.fetchall()
m=m+1
print(result)
cur.close()
conn.close()
4.4 写execl
通过上一步,我们已经查出数据结果,接下来,西红柿教你把数据写到 excel!
path='D:\\\\export' # 输入文件路径
print("请输入文件名,如不输入,默认文件名export: ")
exportname=input()
if exportname=='':
exportname='export'
if os.path.exists('%s\\%s.xlsx'%(path,exportname)):
os.remove('%s\\%s.xlsx'%(path,exportname))
print('导出文件路径: %s\\%s.xlsx'%(path,exportname))
os.chdir('%s'%path)
inwb = openpyxl.Workbook()
inwb.create_sheet('西红柿真帅',0)
sheetname=inwb['西红柿真帅']
inwb.remove_sheet(inwb.get_sheet_by_name(sheetname[1]))
ws=inwb.get_sheet_by_name(sheetname[0])
for i in range(len(result)):
for j in range(len(result[0])):
try:
ws.cell(row = i+1 , column = j+1).value = result[i][j]
except:
pass
inwb.save('%s.xlsx'%exportname)
print("success !!!")
🐥五、效果展示
END、每周福利 🐣🐥
🍅 抽奖规则:每周 5 程序开奖,双奖池制
粉丝池 + 奖品池。把每周的参与粉丝和奖品,都放在一个池子,一起来抽。
🍅 奖品清单
至少 8 本正版图书(本周加5个CSDN 定制日历和实体书),不定期:CSDN 水杯、背包、日历...
1、参与方式:
-
三连文章:在本文下三连互动,爬虫程序即会采集你的名字进入粉丝池。
-
访问社区:在社区点赞评论或发帖,即可获取积分,《社区积分榜》前 50 人,自动进入粉丝池。 社区地址: https://bbs.csdn.net/forums/ITID
2、中奖通知: 信息技术智库丨 CSDN 社区 、Python 全栈技术群
3、补充说明:中奖粉丝微信提供收货地址和想要的书名,很多人问我该选哪一本,大家可以根据兴趣、参考价值来选,西红柿把官网价也附上了。
包邮送书书单:我之前发过的书,也可以选 | 官网地址 | 官网价 |
---|---|---|
Python 3.x 基础教程 | https://item.jd.com/12542555.html | 60 |
Python 编程完全自学教程 | https://item.jd.com/13130464.html | 99 |
Python 入门到人工智能实战 | https://item.jd.com/12648361.html | 79 |
Python 量化金融编程从入门到精通 | https://item.jd.com/13045490.html | 79 |
Python 网络编程从入门到精通 | https://item.jd.com/12659295.html | 69 |
人工智能数学基础与 Python 机器学习实战 | https://item.jd.com/13504186.html | 79 |
🍟 Python 理论基础:全网最全丨 Python 快速入门专栏
🍇 Python 练习应用:全网最黑丨 Python 黑科技专栏
🍅 资料领取
类别 | 信息技术智库 |
---|---|
👇👇👇 领取资料、技术互助 👇👇👇 |
以上是关于基于Python探查Mysql数据库,输出数据质量报告的主要内容,如果未能解决你的问题,请参考以下文章
送书啦Python操作Mysql(连接数据探查写Excel)
送书啦Python操作Mysql(连接数据探查写Excel)