分享一段用于导出数据库中表和字段定义至Excel文档的python代码,此处是针对MySQL的,其他数据库同理,只要少量的改动。

效果

代码

import pandas as pd

import sqlalchemy as sqla

username='root'

password='1234'

server='localhost:3306'

database='world'

charset='utf8'

engine = sqla.create_engine('mysql+pymysql://{}:{}@{}/{}?charset={}'.format(username,password,server,database,charset))

#从系统表查询定义

tables=pd.read_sql('''

select TABLE_SCHEMA,TABLE_NAME,CREATE_TIME,TABLE_COMMENT

from information_schema.TABLES

where TABLE_SCHEMA='%s'

order by TABLE_NAME;

'''%database,engine)

columns=pd.read_sql('''

select TABLE_NAME,COLUMN_NAME,COLUMN_TYPE,COLUMN_KEY,COLUMN_DEFAULT, COLUMN_COMMENT

from information_schema.COLUMNS

where TABLE_SCHEMA='%s'

order by TABLE_NAME,ORDINAL_POSITION;

'''%database,engine)

#导出数据至Excel

file_path='C:\\Users\\hp\\Desktop\\%s.xlsx'%database

writer=pd.ExcelWriter(file_path)

tables.to_excel(writer,'Index',index=False)

for i in range(len(tables)):

table_name=tables["TABLE_NAME"].iloc[i]

columns_=columns[columns["TABLE_NAME"]==table_name].iloc[:,1:]

columns_.to_excel(writer,table_name,index=False)

writer.save()

#调整格式

from openpyxl import load_workbook

from openpyxl.styles import Font,colors,Border,Side

border = Border(left=Side(style='medium',color='FF000000'),

right=Side(style='medium',color='FF000000'),

top=Side(style='medium',color='FF000000'),

bottom=Side(style='medium',color='FF000000'),

diagonal=Side(style='medium',color='FF000000'),

diagonal_direction=0,outline=Side(style='medium',color='FF000000'),

vertical=Side(style='medium',color='FF000000'),

horizontal=Side(style='medium',color='FF000000'))

font=Font(underline='single', color=colors.BLUE)

wb = load_workbook(file_path)

ws = wb.get_sheet_by_name("Index")

#索引页调整列宽

ws.column_dimensions["A"].width =30.0

ws.column_dimensions["B"].width =30.0

ws.column_dimensions["C"].width =30.0

ws.column_dimensions["D"].width =40.0

#增加边框线

for n in range(2,len(tables)+2):

for m in ['A','B','C','D']:

ws[m+str(n)].border=border

#处理各表的页

for i in range(len(tables)):

#索引页增加调转指定表页的链接

table_name=tables["TABLE_NAME"].iloc[i]

ws["B"+str(i+2)].hyperlink = "#"+table_name+"!F1"

ws["B"+str(i+2)].font = font

ws2=wb.get_sheet_by_name(table_name)

#指定表页增加返回索引页的链接

ws2["F1"]="back"

ws2["F1"].hyperlink = "#Index!B"+str(i+2)

ws2["F1"].font=font

#指定表页调整列宽

ws2.column_dimensions["A"].width =30.0

ws2.column_dimensions["B"].width =30.0

ws2.column_dimensions["C"].width =20.0

ws2.column_dimensions["D"].width =20.0

ws2.column_dimensions["E"].width =40.0

#增加边框线

columns_=columns[columns["TABLE_NAME"]==tables["TABLE_NAME"].iloc[i]].iloc[:,1:]

for n in range(2,len(columns_)+2):

for m in ['A','B','C','D','E']:

ws2[m+str(n)].border=border

wb.save(file_path)

python数据字典ppt_[关系型数据库][MySQL]用python快速导出数据字典相关推荐

  1. 什么是腾讯云关系型数据库(MySQL/SQL Server/MariaDB/PostgreSQL详解)

    什么是腾讯云关系型数据库?腾讯云关系型数据库提供 MySQL.SQL Server.MariaDB.PostgreSQL详细介绍.腾讯云关系型数据库让您在云中轻松部署.管理和扩展的关系型数据库,提供安 ...

  2. mysql事务四个特性_关系型数据库mysql事务四大特性

    关系型数据库mysql 事务四大特性 一.首先我们先说一下什么是事务 在mysql中对数据进行增删改查中的任何一次操作的过程都可以被认为是一次事务,事务是一系列严密的操作,事务的结束有两种结果,当事务 ...

  3. mysql关系数据库_关系型数据库MySql简介

    什么是关系型数据库? 数据库就是用来存储数据的仓库,是一种特殊的文件. 根据存储的数据不同,划分为关系型数据库和非关系型数据库. 关系型数据库就是指 建立在关系模型基础上的数据库,通俗来讲这种数据库就 ...

  4. 《Python3 网络爬虫开发实战》:关系型数据库 MySQL 存储

    关系型数据库是基于关系模型的数据库,而关系模型是通过二维表来保存的,所以它的存储方式就是行列组成的表,每一列是一个字段,每一行是一条记录.表可以看作某个实体的集合,而实体之间存在联系,这就需要表与表之 ...

  5. mysql和python的关系_八MySQL与Python

    <1>数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. ...

  6. python如何使用本地数据库_使用Python在虚拟机上怎么连接本地数据库

    首先保证你的虚拟机和本机网络是处于同一网段的(一个局域网内), 然后明确数据库所占用的端口, 数据库账户密码就可以链接上了! python中把一个数据库对应的表封装成类就很好操作了! mysql的话: ...

  7. 关系型数据库Mysql

    关系型数据库 基础知识: 数据库(DB):保存有组织的数据的容器. 数据库管理系统(DBMS):创建和操纵数据的容器. 数据库系统(DBS):DB+DBMS(含应用开发工具)+应用程序+数据库管理员( ...

  8. 数据库和python的结合_redis数据库及与python交互用法简单示例

    本文实例讲述了redis数据库及与python交互用法.分享给大家供大家参考,具体如下: redis数据操作 1.string类型:主要存储字符串 操作 命令 设置键值 set key value 设 ...

  9. 使用D2RQ转换关系型数据库Mysql数据为RDF

    目录 背景 1.安装D2RQ 1.1 简介 1.2 下载安装 1.3 配置mysql连接 2.转换为RDF 2.1 将mysql映射到mapping上 2.2 将Mysql数据转为RDF 背景 知识图 ...

最新文章

  1. 2022-2028年中国联合办公行业深度调研及投资前景预测报告
  2. python发明者叫什么-python是谁的
  3. 一步步教你在以太坊发行自己的数字货币
  4. 密码学基础知识(五)序列密码
  5. 计算两个日期相差的小时差
  6. CDH6 kafka如何彻底删除topic及数据
  7. python使用random生成不重复的随机数
  8. Linux下autoconf与automake
  9. android基础入门控件详解(4)
  10. 有哪些好看的字体可以免费用?看完这篇就知道了
  11. 深度学习常用框架和基础模型
  12. 0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded解决方法
  13. 不用身份证刷手就能坐飞机,掌静脉还能被应用在哪里领域?
  14. 天才少年:稚晖君放弃华为百万年薪,投身机器人!有何“玄机”?
  15. SpringBoot--访问静态页面
  16. 微信小程序在开发者工具和预览下边跳转都好好的真机预览就找不到页面,报错 {“errMsg“:“navigateTo:fail page \“***\“ is not found“}
  17. 四级——星火英语作文模板
  18. 记一次 .NET 某医疗器械 程序崩溃分析
  19. 大写日期转换成阿拉伯数字的算法
  20. TQQ2440第一节:启动代码

热门文章

  1. 解决eclipse出现This Android SDK requires Andro...date ADT to the latest version.问题
  2. 妈蛋的,写篇博客~~
  3. Android 9.0 代码实现对屏幕亮屏和灭屏的控制和显示电量百分比
  4. Tensorflow中的tf.argmax()函数
  5. NASA CEA 安装指南
  6. ImportError: cannot import name ‘ModelOutput‘ from ‘smplx.body_models‘
  7. 飞龙:蒙语“牵手”人工智能的拓荒者
  8. 计算机网络功能中的提高系统的可靠性指的是,下列不属于计算机网络功能的是()。A.提高系统可靠性B.提高工作效率C.分散数据的综合处理D.使...
  9. 中国钢丝绳行业竞争现状及需求前景预测报告(新版)2022-2027年
  10. 魁拔妖侠传 之 浮云骑士语录