导出mysql表结构到word文档

使用python-docx模块进行word数据操作
安装模块: pip install python-docx

---------实例代码---------------
# -*- coding: utf-8 -*-

"""
@Author TangJing
@Date 2021/3/1 12:02
@Describe
@Version 1.0
"""

import pymysql

from docx import Document

# 待导出的数据库信息
pm = {
# ip地址
'host': ['192.168.1.132', '192.168.1.132', '192.168.1.151'],
# 端口号
'port': [3306, 3306, 3306],
# 用户名
'user': ['root', 'root', 'root'],
# 密码
'passwd': ['123456', '123456', '123456'],
# 数据库编码
'charset': ['utf8', 'utf8', 'utf8'],
# 数据库名称
'db': ['smart_checkpoint_cd', 'smart_defense_circle', 'qy_temp'],
# 存储的文件名称
'filename': [u'检查站数据库表结构', u'防空圈数据库表结构', u'真我数据库表结构']
}


def connMysql(pa):
"""
创建数据库连接
:return: 数据库连接(db)
"""
# 数据库连接
try:
db = pymysql.connect(
host=pa[0],
port=int(pa[1]),
user=pa[2],
passwd=pa[3].strip(),
charset=pa[4],
db=pa[5],
)
return db
except Exception as e:
print(e)
return "null"


def query(pm, sql):
"""
根据sql进行查询,并返回所有查询结果
:param sql: 查询语句
:return: 查询结果
"""
db = connMysql(pm)
cursor = db.cursor()
cursor.execute(sql)
data = cursor.fetchall()
cursor.close()
db.close()
return data


def get_word(document, data, *args, **kwargs):
"""
插入数据到word中
:param document: 文档对象
:param data: 数据包
:param args: 文档标题(元组类型)
:param kwargs:
:return:
"""
# 加入标题
document.add_heading(str(args[0] + '-' + args[1]), 1)
# 增加表格
table = document.add_table(rows=1, cols=4, style='Medium Grid 1 Accent 1')
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '字段名称'
hdr_cells[1].text = '数据类型'
hdr_cells[2].text = '是否必填'
hdr_cells[3].text = '注释'

# 增加表格行元素
for filds in data:
row_cells = table.add_row().cells
for i in range(4):
row_cells[i].text = filds[i]


if __name__ == '__main__':
print('数据导出中...')
for i in range(len(pm['host'])):
document = Document()
document.add_heading(pm['filename'][i], 0)
sql_table = r"SELECT table_name 表名, table_comment 表说明 FROM information_schema.TABLES WHERE table_schema = '{}' ORDER BY table_name".format(
pm['db'][i])
# 查询当前库下所有表信息
pa = (
pm['host'][i], pm['port'][i], pm['user'][i], pm['passwd'][i], pm['charset'][i], pm['db'][i],
pm['filename'][i])
tables_info = query(pa, sql_table)
for tab in tables_info:
sql_fild = "SELECT COLUMN_NAME 字段名称, COLUMN_TYPE 数据类型, IF(IS_NULLABLE='NO','是','否') AS '必填', COLUMN_COMMENT 注释 FROM INFORMATION_SCHEMA.COLUMNS where table_schema ='{}' AND table_name = '{}'".format(
pm['db'][i], tab[0])
# 查询当前表下所有字段信息
filds_info = query(pa, sql_fild)
# 将当前表字段信息插入到word中
get_word(document, filds_info, tab[0], tab[1])
document.save(pm['filename'][i] + '.docx')
print('导出完成.')
原文地址:https://www.cnblogs.com/ziyewu/p/14464739.html