生成数据库表结构markdown描述文档

三款Web端开源ER图工具实测:diagrams.net、DBML与Mermaid 数据库设计是软件工程中的基础环节,而ER图作为实体关系的可视化表达,贯穿需求分析、表结构设计与技术评审全过程。传统桌面端建模工具虽功能强大,却受限于安装环境、授权费用和协作方式。随着Web技术和开源生态的发展,浏览器即可运行的ER图方案逐渐成为开发者首选。diagrams.net以通用绘图能力见长,适合输出精美交付图;DBML通过文本描述表结构,能自动生成DDL并融入版本管理;Mermaid则让ER图嵌入Markdown文档,在GitHub/GitLab中原生渲染。三者原理不同,但分别解决了设计可视化、代码 阅读详情

如何把数据库表结构生成markdown描述文档

在日常工作中,可能表结构调整,文档没用及时更新,当再次需要更新时,一条条去找就很费时费力,能不能一次性导出我们需要的文档结构呢,当然navicat默认导出的是E-R图,有时候并不符合想要的文档结构图。如果是markdown格式则方便很多,我们甚至可以用markdown文档转为excel批量改成我们想要的文档风格。

生成markdown描述文档效果如下图

在这里插入图片描述

了解原理

1.根据sql查询对应表空间的所有表和表注释
2.遍历1中的所有表名,查出对应的表结构描述信息



-- 查询表空间里面的所有表名和注释
SELECT TABLE_NAME, TABLE_COMMENT  
FROM INFORMATION_SCHEMA.TABLES  
WHERE TABLE_SCHEMA = 'test' 
-- AND TABLE_NAME LIKE 'bas%'; # 可以根据表前缀按指定的模块查询对应表名


-- 查询对应的表结构
SELECT
COLUMN_NAME 列名,
COLUMN_COMMENT 注释 ,
-- COLUMN_TYPE 数据类型,
DATA_TYPE 字段类型, 
CASE WHEN LOCATE('(',COLUMN_TYPE) >0 THEN  SUBSTR(REPLACE(COLUMN_TYPE,')',''),LOCATE('(',COLUMN_TYPE)+1) ELSE  CHARACTER_MAXIMUM_LENGTH END   长度,
CASE  IS_NULLABLE WHEN 'YES' THEN '√' ELSE NULL END 允许空,

COLUMN_DEFAULT 描述 
FROM
INFORMATION_SCHEMA.COLUMNS
where
table_schema ='spd3_herp_dev' AND TABLE_NAME='sys_access_log'

使用python和模板生成markdown文档

这里就直接使用对应的脚本了

1.文档模板template-table


{{#items}}
 ## {{tableName}}{{tableComent}}

| 列名 | 注释 | 字段类型 | 长度 | 允许为空 | 描述 |
|----|----|------|----|------|----|
{{#rowList}}
|  {{columnName}}  | {{columnComment}}   |    {{dataType}}  |  {{dataLength}}  |   {{nullAble}}   |  {{desc}}  |
{{/rowList}}

{{/items}}

2.python3的脚本


# 读取mysql中的表结构生成markDown文档
# author zjcjava
# https://blog.youkuaiyun.com/zjcjava/
# time 25/07/29
 

import mysql.connector
from mysql.connector import Error
import  pystache

renderer = pystache.Renderer()

# 数据库连接配置
config = {
    'host': 'localhost',
    'port': 3306,
    'database': 'test',
    'user': 'root',
    'password': 'root',
   # 'charset': 'utf8mb4',
}


def filterNull(value):
    return value if value is not None else ''


def generate_mysql2md():
    connection = {}
    try:
        # 创建数据库连接
        connection = mysql.connector.connect(
         host= config['host'],        # 数据库地址
         port=3306,               # 数据库端口
         database= config['database'],  # 这里需要指定你要连接的数据库名
         user= config['user'],             # 数据库账号
         password= config['password']        # 数据库密码

        )
        if connection.is_connected():
            print("成功连接到数据库")

        cursor = connection.cursor()
        cursor.execute("SELECT TABLE_NAME, TABLE_COMMENT   FROM INFORMATION_SCHEMA.TABLES   WHERE TABLE_SCHEMA = 'spd3.0' AND TABLE_NAME LIKE 'sys%' AND TABLE_COMMENT !='' ")
        tables = cursor.fetchall()

        # 创建Word文档
        #doc = Document()
        tableList = []
        for index, table in enumerate(tables,start=0):
             table_name=table[0]
             item= {'tableName':table[0],'tableComent':table[1]}
             cursor.execute(F"SELECT COLUMN_NAME 列名, COLUMN_COMMENT 注释 , DATA_TYPE 字段类型, CASE WHEN LOCATE('(',COLUMN_TYPE) >0 THEN  SUBSTR(REPLACE(COLUMN_TYPE,')',''),LOCATE('(',COLUMN_TYPE)+1) ELSE  CHARACTER_MAXIMUM_LENGTH END   长度,CASE  IS_NULLABLE WHEN 'YES' THEN '√' ELSE NULL END 允许空, COLUMN_DEFAULT 描述 FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema ='{config['database']}' AND TABLE_NAME='{table_name}' ")

             columns = cursor.fetchall()
             rowList = []
             for  index, row in enumerate(columns,start=0):
                   columnRow = {'columnName':row[0],
                   'columnComment':row[1],
                   'dataType':row[2],
                   'dataLength':row[3],
                   'nullAble': filterNull(row[4]),
                   'desc': filterNull(row[5])
                   }
                   print(columnRow)
                   rowList.append(columnRow)
#              print(rowList)
             item['rowList']= rowList
#              print(item)
             tableList.append(item)


        print("-----------------------------")
        data ={"items": tableList}
        api = open("template-table", "r" ,encoding='utf-8') #用文件作为模板
        api_content=pystache.render(api.read(), data)
        with open('output.txt', 'w',encoding='utf-8') as file:
            file.write(api_content)



    except Error as e:
        print(f"连接失败: {e}")

    finally:
        # 关闭数据库连接
        if connection.is_connected():
            connection.close()
            print("数据库连接已关闭")



#执行脚本入口
generate_mysql2md()

执行后保存为markdown格式即可

简洁好用的数据库表结构文档生成工具screw 日常的开发工作中,经常会和数据库打交道,在某些场景可能会需要数据库表结构的文档,今天分享个简洁好用的数据库表结构文档生成工具screw。 阅读详情

相关推荐

Markdown_Document:一个漂亮的文档模板,可以使用 Jekyll 托管在 Github 页面上

Markdown_Document 这个 Github 存储库通过使用 Jekyll 将简单的 Markdown 文本文件转换为静态网站,为漂亮的 HTML 文档提供了模板。 因为 Github 支持 Jekyll,所以这个文档可以在免费托管。 只需 fork 这个存储库并将你的 markdown(或类似)文件替换为“index.md”。 可以在找到基于所提供的设置和伪造文档的示例站点。 我使用降价的 kramdown 风格来允许数学公式(通过 MathJax - LaTeX 风格)。 最好的示例表是使用原始 HTML 提供的,这很糟糕并且有点违背了使用 Markdown 开始的目的。 我还提供了一些在“纯”降价和 LaTeX 中生成的表格的更简单示例。 LaTeX 版本需要使用更严格的“数组”环境而不是“表格”。 这些选项对我来说似乎都不是很好,所以如果您有更好的(即“纯”降价)解

Markdown使用学习文档

欢迎使用 Markdown在线编辑器 MdEditor Markdown是一种轻量级的「标记语言」 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面,Markdown文件的后缀名便是“.md” MdEditor是一个在线编辑Markdown文档的编辑器 MdEditor扩展了Markdown的功能(如表格、脚注、内嵌HTML等等),以使让Markdown转换成更多的

weixin_51713776的博客 675

海量Embedding进行相似度查询和比较的方法

这个是在科研中的现实需求。例如每一个源代码文件,我们可以生成一个embedding,如果有超过5000万个embedding(例如用BERT生成5000万个embedding),怎么样有效地计算相似性呢(例如有5000个positive的embedding,想在5000万个中找到类似的)。 简单介绍一下我尝试的结果:如果直接用torch.cosine_similarity,我手里的数据估计至少要处理两个月。这时候就想到了用LSH -- Locality Sensitive Hashing,但是我之前并没怎

qysh123的专栏 4566

【原创】MarkDown-常用模板

[TOC]]

weixin_42306823的博客 4117

链式中介效应结果解读:从Bootstrap置信区间到实践意义

本文深入解析链式中介效应结果的解读方法,从Bootstrap置信区间的应用到实践意义的阐述。通过实际案例展示如何分析总效应、直接效应和间接效应,并强调效应量评估的重要性。文章还提供了构建逻辑解释的三步法,以及敏感性分析和报告撰写的实用技巧,帮助研究者准确解读链式中介效应。

weixin_33690367的博客 718

Windows 10 本地开发环境:用 ShardingSphere-Proxy 5.4.1 快速搭建 MySQL 分库分表测试环境

本文详细介绍了在Windows 10系统中使用ShardingSphere-Proxy 5.4.1快速搭建MySQL分库分表测试环境的完整教程。从环境准备、MySQL配置到ShardingSphere-Proxy的核心设置,逐步指导开发者完成本地开发环境的搭建,并提供了分片策略详解和常见问题排查方法,帮助开发者高效验证分库分表功能。

weixin_28366053的博客 214

常用接口文档模板(markdown版)

【代码】常用接口文档模板(markdown版)

zhamors 2681

别再用UE5默认材质:用Substance Painter一招提升写实感

今天,我就把这套从模型准备到引擎最终呈现的全流程技巧毫无保留地分享出来,这套方法不仅能让你的作品细节炸裂,更能让你理解次世代PBR(Physically Based Rendering)材质的底层逻辑。

海外旅居设计师,15年设计经验。 1324

markdown模板(个人使用)

自用优快云的markdown模板

萌新选手的博客 5574

Squareline Studio + LVGL实战:从Figma设计到MCU屏幕的UI开发一条龙(避坑中文显示)

本文详细介绍了使用Squareline Studio和LVGL实现从Figma设计到MCU屏幕UI开发的全流程,重点解决中文显示等常见问题。通过设计工具链搭建、设计稿转换、LVGL工程集成及性能优化等步骤,帮助开发者高效完成嵌入式GUI开发,提升开发效率。

weixin_29246195的博客 582

搞定汽车座椅电机EMC超标:一个PCB滤波板的实战设计与避坑心得

本文详细介绍了汽车座椅电机EMC超标问题的解决方案,通过PCB滤波板的实战设计,解决了传导发射测试超标问题。文章分享了在空间受限条件下的滤波电路架构设计、接地系统优化及迭代验证过程,为汽车直流电机的EMC整改提供了实用方法论。

weixin_30336061的博客 377

如何用AI自动生成ODS数据仓库设计文档

用下来最大的感受是省去了80%的重复劳动,特别是字段映射和文档排版这些机械工作。平台生成的Markdown文档可以直接提交给团队评审,后续开发ETL作业时字段对照一目了然。刚开始担心AI生成的内容不够专业,实际测试发现对数据仓库的范式约束、缓慢变化维处理等场景都有不错的表现。对于需要持续运行的数据仓库项目,可以试试平台的一键部署能力,直接把生成的设计文档和示例数据库关联起来快速验证,比本地搭环境方便很多。的AI辅助功能后,发现能快速生成标准化文档,分享下具体操作心得。

GoldEagle19的博客 1020

【我的Android进阶之旅】异常: Problems reading data from Binary store in Local\Temp\gradlexxx.bin (exist: true)

一、异常描述 今天开个会议,电脑自动关机了,重启电脑之后,打开Android Studio,编译代码,就编译失败,如下所示:异常提示 : Caused by: java.lang.RuntimeException: Problems reading data from Binary store in C:\Users\000\AppData\Local\Temp\gradle6337489649031706149.bin (exist: true) Caused by: java.lang.Runtime

字节卷动 3821

千问3.5-9B后端开发提效:自动生成API文档与数据库设计

本文介绍了如何在星图GPU平台上自动化部署千问3.5-9B镜像,实现后端开发效率提升。该镜像能自动生成API文档与数据库设计,典型应用于电商系统的接口文档维护和表结构优化,显著减少开发者的重复性工作。

weixin_33773084的博客 440

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数据库标准文档输出

简介 screw 数据库文档生成工具 简洁好用的数据库表结构文档生成工具 可以生成html,word,markdwon文档。 如果需要生成excel可以看PowerDesigner的导出excel脚本 导包 <dependency> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-core</artifactId>

GMaya的博客 479

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java语言实现根据sql文件生成markdown表结构文档

sql2Markdown 作用: 根据sql文件生成markdown表结构文档 代码地址:https://github.com/xiuhongwu/sql2Markdown 缘起: 我是公司的新人,有一次改bug涉及到数据库,表多字段多,于是问大佬有没有表结构文档,问了三遍,回答是没有!!! 记得刚进公司培训的时候,有一位大佬给的表结构文档说是根据数据库自动生成的。百度一下发现真的有这种工具,试用...

刘墨泽 1357

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Azimutt 数据查询革命:可视化导航和关系跟踪完整教程

# Azimutt 数据查询革命:可视化导航和关系跟踪完整教程 Azimutt 是一款强大的开源数据库探索工具,能够帮助开发者轻松可视化、导航和跟踪数据库关系。无论你是处理复杂的关系型数据库还是文档型数据库,Azimutt 都能提供直观的界面和强大的功能,让数据探索变得前所未有的简单。 ## 为什么选择 Azimutt 进行数据查询? 在传统的数据库管理工具中,开发者往往需要面对复杂的 SQ

gitblog_00529的博客 901

开源项目:数据库表结构生成文档工具

今天给大家分享我自己编写的数据库表结构文档生成工具,方便大家在实际开发当中,可以很方便导出业务系统的表结构,也可以作为项目验收文档中数据库设计文档使用。这样可以大大减少编写数据库表结构文档的时间,有需要的朋友欢迎下载或者沟通交流!二、技术框架编程语言:C# ( Net Framework4.5.5)数据库技术框架:Dapper导出Word文档:NPOI访问方式:WinForm窗体应用程序,Windows操作系统可以直接运行三、功能介绍。

IT技术分享社区 4283

Java实现生成数据库表结构文档(生成工具screw的使用)

springboot整合screw实现生成数据库表结构文档

12程序猿的博客 2136

MySQL 表结构生成 Markdown 文档 | 工具篇

https://learnku.com/articles/36523 背景 在实施软件工程的时候,当要将某一版本归档时,需要汇总的文档要求还是比较高的、各类文档齐全,包括项目架构、项目安装、接口等文档,而数据库表结构说明文档亦属于其一。记得很早之前想找一个可以导出 MySQL 数据库表结构说明文档的工具,生态上的这种工具是有的、只不过并没有一个使我比较满足的。当然、看个人所需,我需要一个可以导出 markdown 文档的。 于是 mysql_markdown 就出现了、应用而生。它是一款基于 g.

weixin_41728103的博客 1038

数据库表结构文档生成工具

数据库表结构文档生成工具 我们经常会有编写数据库表结构文档的时间付出,关于数据库表结构文档状态: 要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、 如果忘记一次维护、就会给以后工作造成很多困扰。 推荐一款插件用来生成数据库文档。 screw插件 screw特点 简洁、轻量、设计良好 多数据库支持 多种格式文档 灵活扩展 支持自定义模板 数据库支持 MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB 文档生成支

DotNetFamily 1845

database-export:数据库文档自动生成的终极解决方案

在数据库开发和维护过程中,你是否曾为手动整理表结构文档而苦恼?面对频繁变更的数据库设计,传统的手动记录方式不仅效率低下,还容易出错。现在,database-export这款基于SpringBoot的开源工具,能够一键将数据库结构导出为多种格式的专业文档,彻底解决这一痛点。 ## 常见痛点:数据库文档管理的三大难题 **文档滞后问题**:开发团队经常遇到数据库结构已经变更,但相关文档却迟迟未能更

gitblog_00798的博客 1374

超给力,一键生成数据库文档-数据库表结构逆向工程

数据库文档是我们在企业项目开发中需要交付的文档,通常需要开发人员去手工编写。笔者最近在github上面发现一个数据库文档生成工具。

字母哥博客 2709

【转】MySQL 表结构生成 Markdown 文档 | 工具篇

在实施软件工程的时候,当要将某一版本归档时,需要汇总的文档要求还是比较高的、各类文档齐全,包括项目架构、项目安装、接口等文档,而。数据库表结构说明文档的工具,生态上的这种工具是有的、只不过并没有一个使我比较满足的。当然、看个人所需,我需要一个可以导出。表结构说明文档亦属于其一。记得很早之前想找一个可以导出。MySQL 表结构生成 Markdown 文档。就出现了、应用而生。语言编写的一个命令行工具,适用于。md转其它类型的文档推荐使用。工具 它支持如下转换格式。

DIY_lOVER的博客 1458
上一篇: springboot在feign和线程池中使用TraceId日志链路追踪(最终版)-2
下一篇: windows系统安装nvm踩坑记录
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值