Python如何生成mysql数据库结构文档?Python怎么获取mysql数据库结构

在一个python程序的开发过程之中如果是使用了mysql数据库的话,就会创建数据库并且建立数据表 。而为了能够和其他的开发人员进行合理的接洽,就需要将数据库结构给导出来生成文档 。所以本文要来给大家介绍的内容就是python生成mysql数据库结构文档并保存为word的教程 。

Python如何生成mysql数据库结构文档?Python怎么获取mysql数据库结构

文章插图
1.第一步就要去导入所需要的库,主要就是连接mysql数据库的pymysql库,以及操作word文档的docx库 。这两个库是第三方库,需要下载安装后才可以导入使用 。然后创建一个mysql数据库连接对象,代码如下:
import pymysqlfrom docx import Documentfrom docx.shared import Ptfrom docx.oxml.ns import qndb = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='test_db')2.第二步则是需要创建一个函数来将这个数据库下面的所有表名以及其注释说明给查询出来,代码如下:
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 data3.在有了当前数据库下面所有的数据表名之后,就可以根据这个表名来查询出里面的字段以及相关信息乐 。也就是字段名以及数据类型,代码示例如下所示:
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 data4.那么在所有的数据都有了之后就可以将它们写在word文档里面了,主要的操作就是创建一个word文档对象 。然后再通过它去创建表格,将查询出来的数据写入到表格中就好了,代码示例如下所示:
【Python如何生成mysql数据库结构文档?Python怎么获取mysql数据库结构】def generateWord(singleTableData,document,tableName):    r=p.add_run('\n'+tableName)    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._element5.那么最后只要去按照顺序调用这三个函数并且将需求的参数按照正确格式传递进去,这样就能够完成python生成mysql数据库结构文档的操作了,详细代码示例如下所示:
if __name__ == '__main__':    document = Document()    tableList = queryTableName()    for singleTableName in tableList:        data = query(singleTableName[0])        generateWord(data,document,singleTableName[1])   document.save('mysql.docx')

推荐阅读