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

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

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

四、过程


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

代码大致分为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、写execl

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 !!!”)

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

领导真有眼光!!⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄

【送实体书环节】

本书轻理论,重实践,目的是用低的学习成本,让读者快速上手Python编程与应用开发。

总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

请转发本文支持一下

找小编(vip1024c)领取
你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

请转发本文支持一下

[外链图片转存中…(img-FRPLVCcK-1721723648094)]

[外链图片转存中…(img-VGPBWJvK-1721723648095)]

找小编(vip1024c)领取

  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值