用python生成mysql数据库结构文档

 更新时间:2022年01月20日 09:24:15   作者:henghenghahei_3  
大家好,本篇文章主要讲的是用python生成mysql数据库结构文档,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下

最近因为项目原因需要编写数据库设计文档,但是由于数据表太多,手动编写耗费的时间太久,所以搞了一个简单的脚本快速生成数据库结构,保存到word文档中。

安装pymysql和document

pip install pymysql
pip install document

脚本

# -*- coding: utf-8 -*-
import pymysql
from docx import Document
from docx.shared import Pt
from docx.oxml.ns import qn

db = pymysql.connect(host='127.0.0.1', #数据库服务器IP
                         port=3306,
                         user='root',
                         passwd='123456',
                         db='test_db') #数据库名称)
#根据表名查询对应的字段相关信息
def query(tableName):
    #打开数据库连接
    cur = db.cursor()
    sql = "select b.COLUMN_NAME,b.COLUMN_TYPE,b.COLUMN_COMMENT from (select * from information_schema.`TABLES`  where TABLE_SCHEMA='test_db') a right join(select * from information_schema.`COLUMNS` where TABLE_SCHEMA='test_db_test') b on a.TABLE_NAME = b.TABLE_NAME where a.TABLE_NAME='" + tableName+"'"
    cur.execute(sql)
    data = cur.fetchall()
    cur.close
    return data
#查询当前库下面所有的表名,表名:tableName;表名+注释(用于填充至word文档):concat(TABLE_NAME,'(',TABLE_COMMENT,')')
def queryTableName():
    cur = db.cursor()
    sql = "select TABLE_NAME,concat(TABLE_NAME,'(',TABLE_COMMENT,')') from information_schema.`TABLES`  where TABLE_SCHEMA='test_db_test'"
    cur.execute(sql)
    data = cur.fetchall()
    return data
#将每个表生成word结构,输出到word文档
def generateWord(singleTableData,document,tableName):
    p=document.add_paragraph()
    p.paragraph_format.line_spacing=1.5 #设置该段落 行间距为 1.5倍
    p.paragraph_format.space_after=Pt(0) #设置段落 段后 0 磅
    #document.add_paragraph(tableName,style='ListBullet')
    r=p.add_run('\n'+tableName)
    r.font.name=u'宋体'
    r.font.size=Pt(12)
    table = document.add_table(rows=len(singleTableData)+1, cols=3,style='Table Grid')
    table.style.font.size=Pt(11)
    table.style.font.name=u'Calibri'
    #设置表头样式
    #这里只生成了三个表头,可通过实际需求进行修改
    for i in ((0,'NAME'),(1,'TYPE'),(2,'COMMENT')):
        run = table.cell(0,i[0]).paragraphs[0].add_run(i[1])
        run.font.name = 'Calibri'
        run.font.size = Pt(11)
        r = run._element
        r.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    
    for i in range(len(singleTableData)):
        #设置表格内数据的样式
        for j in range(len(singleTableData[i])):
            run = table.cell(i+1,j).paragraphs[0].add_run(singleTableData[i][j])
            run.font.name = 'Calibri'
            run.font.size = Pt(11)
            r = run._element
            r.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
        #table.cell(i+1, 0).text=singleTableData[i][1]
        #table.cell(i+1, 1).text=singleTableData[i][2]
        #table.cell(i+1, 2).text=singleTableData[i][3]
    

if __name__ == '__main__':
    #定义一个document
    document = Document()
    #设置字体默认样式
    document.styles['Normal'].font.name = u'宋体'
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    #获取当前库下所有的表名信息和表注释信息
    tableList = queryTableName()
    #循环查询数据库,获取表字段详细信息,并调用generateWord,生成word数据
    #由于时间匆忙,我这边选择的是直接查询数据库,执行了100多次查询,可以进行优化,查询出所有的表结构,在代码里面将每个表结构进行拆分
    for singleTableName in tableList:
        data = query(singleTableName[0])
        generateWord(data,document,singleTableName[1])
    #保存至文档
    document.save('数据库设计.docx')

生成的word文档预览

在这里插入图片描述

到此这篇关于用python生成mysql数据库结构文档的文章就介绍到这了,更多相关python生成mysql结构文档内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python字符串判断密码强弱

    python字符串判断密码强弱

    这篇文章主要为大家详细介绍了python字符串判断密码强弱,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 分享给Python新手们的几道简单练习题

    分享给Python新手们的几道简单练习题

    这篇文章主要给学习Python的新手们分享了几道简单练习题,文中给出了详细的示例代码供大家学习参考,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • python pandas 时间日期的处理实现

    python pandas 时间日期的处理实现

    这篇文章主要介绍了python pandas 时间日期的处理实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python中django框架通过正则搜索页面上email地址的方法

    python中django框架通过正则搜索页面上email地址的方法

    这篇文章主要介绍了python中django框架通过正则搜索页面上email地址的方法,涉及django框架及正则表达式的使用技巧,需要的朋友可以参考下
    2015-03-03
  • Python mutiprocessing多线程池pool操作示例

    Python mutiprocessing多线程池pool操作示例

    这篇文章主要介绍了Python mutiprocessing多线程池pool操作,结合实例形式分析了Python多线程模块multiprocessing进程池相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • 使用Python 操作 xmind 绘制思维导图的详细方法

    使用Python 操作 xmind 绘制思维导图的详细方法

    在平时的工作中当我们要总结一些知识的时候就需要一款工具来画画流程图,这里推荐 XMind 软件,用 Xmind 绘制的思维导图看起来思路清晰,那么今天的文章介绍关于思维导图的相关知识以及用 Python 如何操作 Xmind 绘制思维导图
    2021-10-10
  • Python处理日期方法详细大全(30种方法)

    Python处理日期方法详细大全(30种方法)

    这篇文章主要给大家介绍了关于Python处理日期方法详细大全,文中共介绍了30种方法,Python程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能,Python提供了一个time和calendar模块可以用于格式化日期和时间,需要的朋友可以参考下
    2023-12-12
  • 详解python3百度指数抓取实例

    详解python3百度指数抓取实例

    本篇文章主要介绍了python3百度指数抓取,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。
    2016-12-12
  • Python实现抓取腾讯视频所有电影的示例代码

    Python实现抓取腾讯视频所有电影的示例代码

    这篇文章主要为大家介绍了如何使用python实现抓取腾讯视频所有电影,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • python中的pyc文件是什么

    python中的pyc文件是什么

    这篇文章主要介绍了python中的pyc文件是什么,pyc文件是Python编译过的字节码文件,这个字节码是一种低级的、与平台无关的代码,还不知道的朋友来了解一下吧
    2023-04-04

最新评论