python生成markdown格式的数据库文档

3,437 阅读1分钟

数据库结构文档看起来不是很方便,所以生成一份文档帮助还是挺大的

效果图(pdf格式)

可以导出为HTMLmarkdownpdf三种样式的

我们可以看到导出md的样式也是相当nice的

我用的是python3,贴一下代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import mysql.connector as mysql
import sys
import getopt

def usage():
    print('help:')
    print('--host db server,default localhost')
    print('--port db port,default 3306')
    print('--user db username,default root')
    print('--password db password,default blank')
    print('--database db name')
    print('--output markdown output file,default current path')

if __name__ == '__main__':
    try:
        opts,args = getopt.getopt(sys.argv[1:],"h",["help","host=","port=","database=","user=","password=","output="])
    except getopt.GetoptError:
        sys.exit()
    if 'help' in args:
        usage()
        sys.exit()
        print(opts)
    host = 'localhost'
    user = 'root'
    password = '123456'
    database = 'gulimall_admin'
    port = 3307
    #生成的md路径(windows的改成你自己的盘)
    output = '/project/ExportTable/markdown.out'

    for op,value in opts:
        if op == '--host':
            host = value
        elif op == '--port':
            port = value
        elif op == '--database':
            database = value
        elif op == '--user':
            user = value
        elif op == '--password':
            password = value
        elif op == '--output':
            output = value
        elif op == '-h':
            usage()
            sys.exit()
        if database == '':
            usage()
        #    sys.exit()
    conn = mysql.connect(host=host,port=port,user=user,password=password,database='information_schema')
    cursor = conn.cursor()
    cursor.execute("select table_name,table_comment from information_schema.tables where table_schema='%s' and table_type='base table'" % database)
    tables = cursor.fetchall()

    markdown_table_header = """### %s (%s) 
字段名 | 字段类型 | 默认值 | 注解
---- | ---- | ---- | ---- """
    markdown_table_row = """
%s | %s | %s | %s """
    f = open(output,'w')
    for table in tables:
        cursor.execute("select COLUMN_NAME,COLUMN_TYPE,COLUMN_DEFAULT,COLUMN_COMMENT from information_schema.COLUMNS where table_schema='%s' and table_name='%s'"% (database,table[0]))
        tmp_table = cursor.fetchall()
        p = markdown_table_header % table;
        for col in tmp_table:
            p += markdown_table_row % col
        f.writelines(p)
        f.writelines('\r\n')
    f.close()
    print('generate markdown success!')

找到生成的文件

复制这些神秘代码,打开马克飞象,复制到左边的栏位

然后你可以导出为你喜欢的格式

点一下图里标绿色的象头,然后就可以为所欲为了