热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python教程分享用python生成mysql数据库结构文档

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

最近因为项目原因需要编写数据库设计文档,但是由于数据表太多,手动编写耗费的时间太久,所以搞了一个简单的脚本快速生成数据库结构,保存到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,)      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,)      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生成mysql结构文档内容请搜索<编程笔记>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<编程笔记>!

需要了解更多python教程分享用python生成mysql数据库结构文档,都可以关注python教程分享栏目&#8212;编程笔记


推荐阅读
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
author-avatar
mqfcu123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有