zoukankan      html  css  js  c++  java
  • 导出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('导出完成.')
  • 相关阅读:
    python排序算法的实现-插入
    python排序算法的实现-选择
    python排序算法的实现-冒泡
    python数据结构之图深度优先和广度优先
    python数据结构之图的实现
    python数据结构之二叉树遍历的实现
    python数据结构之二叉树的实现
    python数据结构之栈、队列的实现
    让淘宝链接在微信中分享,GO
    解决git 不同branch 下node_moudes不同步的问题
  • 原文地址:https://www.cnblogs.com/ziyewu/p/14464739.html
Copyright © 2011-2022 走看看