Python操作Mysql(连接、数据探查、写Excel)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Python操作Mysql(连接、数据探查、写Excel)

正文


一、缘起


事情是这样的,领导安排一个活,详细探查xx公司的数据治理,包括数据源,数据流,数据质量。


PS.工作量非常大,费劲整理出质量报告!


123.png


好的,没问题: 嘴上逞强,心在滴血!


二、转机


我一想,数据探查不就是看这些指标:


表名,列名,空值数量,总数据量,空值率,字符类型,字段长度,备注,主键,权限


既如此,何不用python?


于是乎,奋笔疾书!


三、成果


说干就干,最终用python 快速完成数据治理调研,而我,楼下遛弯去了~


但是,活可没马虎,给大家康康效果:

234.png

四、过程


为了让更多有数据处理需求的小伙伴,高效搞定工作,我觉得把相关代码完全开源,当然,也有提升的地方,希望小伙伴在评论区指指点点。

代码大致分为4个部分:


1、导包


#coding=utf-8
from __future__ import division
import os,openpyxl,pymysql as MySQL


2.连接数据库


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("连接成功!!!")


3、数据探查


#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()
    for col in ret1:
        ll=[]
        quary3="""select count(*)  from  %s  AS AAA where  AAA.%s  is null; """%(i,col[0])
        print(quary3)
        ret2=cur.execute(quary3)
        ret2=cur.fetchall()
        quary4="""SELECT  DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLUMN_COMMENT,COLUMN_KEY,PRIVILEGES  from information_schema.COLUMNS where  TABLE_NAME=\'%s\' and COLUMN_NAME=\'%s\';"""%(i,col[0])
        print(quary4)
        re4=cur.execute(quary4)
        re4=cur.fetchall()
        print(re4)
        ll.append(i)
        ll.append(col[0])
        ll.append(ret2[0][0])
        ll.append(retsc[0][0])
        try:
            ll.append(str(round(ret2[0][0]/retsc[0][0],2)))
        except:
            ll.append(0)
        ll.append(re4[0][0])
        ll.append(re4[0][1])
        ll.append(re4[0][2])
        ll.append(re4[0][3])
        ll.append(re4[0][4])
        result.append(ll)
    m=m+1
print(result)
cur.close()
conn.close()


4、写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.get_sheet_names()
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])):
        ws.cell(row = i+1 , column = j+1).value = result[i][j]
inwb.save('%s.xlsx'%exportname)
print("success !!!")


数据质量调研搞完了,发给领导~


123.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
1月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
131 68
|
16天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
95 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
21天前
|
关系型数据库 MySQL 网络安全
DBeaver连接MySQL提示Access denied for user ‘‘@‘ip‘ (using password: YES)
“Access denied for user ''@'ip' (using password: YES)”错误通常与MySQL用户权限配置或网络设置有关。通过检查并正确配置用户名和密码、用户权限、MySQL配置文件及防火墙设置,可以有效解决此问题。希望本文能帮助您成功连接MySQL数据库。
34 4
|
29天前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
45 3
|
15天前
|
机器学习/深度学习 前端开发 数据处理
利用Python将Excel快速转换成HTML
本文介绍如何使用Python将Excel文件快速转换成HTML格式,以便在网页上展示或进行进一步的数据处理。通过pandas库,你可以轻松读取Excel文件并将其转换为HTML表格,最后保存为HTML文件。文中提供了详细的代码示例和注意事项,帮助你顺利完成这一任务。
27 0
|
1月前
|
安全 关系型数据库 MySQL
【赵渝强老师】MySQL的连接方式
本文介绍了MySQL数据库服务器启动后的三种连接方式:本地连接、远程连接和安全连接。详细步骤包括使用root用户登录、修改密码、创建新用户、授权及配置SSL等。并附有视频讲解,帮助读者更好地理解和操作。
119 1
|
1月前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
28 1
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
下一篇
DataWorks