基于Python探查Mysql数据库,输出数据质量报告

Posted 不吃西红柿丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Python探查Mysql数据库,输出数据质量报告相关的知识,希望对你有一定的参考价值。

点赞评论收藏 = 三连再看你最帅

目录

🐶一、环境准备

🐱二、学习目标

🐭三、知识储备

3.1 数据获取

3.2 事务特性

🐰四、代码实现

4.1 导包

4.2 连接数据库

4.3 数据探查

4.4 写execl

🐥五、效果展示

END、每周福利 🐣🐥

🍅 抽奖规则:每周 5 程序开奖,双奖池制

🍅 奖品清单

🍅 资料领取


🍅 联系作者 不吃西红柿 

🍅 作者简介: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.html60
Python 编程完全自学教程https://item.jd.com/13130464.html99
Python 入门到人工智能实战https://item.jd.com/12648361.html79
Python 量化金融编程从入门到精通https://item.jd.com/13045490.html79
Python 网络编程从入门到精通https://item.jd.com/12659295.html69
人工智能数学基础与 Python 机器学习实战https://item.jd.com/13504186.html79

🍟 Python 理论基础:全网最全丨 Python 快速入门专栏

🍇 Python 练习应用:全网最黑丨 Python 黑科技专栏

🍅 资料领取

类别信息技术智库
👇👇👇 领取资料、技术互助 👇👇👇

以上是关于基于Python探查Mysql数据库,输出数据质量报告的主要内容,如果未能解决你的问题,请参考以下文章

送书啦Python操作Mysql(连接数据探查写Excel)

送书啦Python操作Mysql(连接数据探查写Excel)

数据质量包括啥方面

从此告别写 SQL!DataLeap 帮你零门槛完成“数据探查”

Python 探查器 Statprof 多次出现相同的过程

在 python 中看不到数据库查询输出