MacOS13-将数据库转为markdown,docx格式

2024-06-04 05:04

本文主要是介绍MacOS13-将数据库转为markdown,docx格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MacOS13-将数据库转为markdown,docx格式

文章目录

  • 先说踩坑点
    • 各种模块缺失
  • 代码
  • 效果
  • 总结
  • 参考

先说踩坑点

各种模块缺失

tkinter

mysql

没错,你可以直接点击安装;

请添加图片描述

如果还出现报错
请添加图片描述

你需要打开终端

pip install mysqlclient

再次点进去安装后会出现导包,选择第二个

同样在这个页面,搜索安装各种模块

docx

报错

“Traceback (most recent call last):File "/Users/lin/Desktop/Python/mysql/tomd.py", line 4, in <module>from docx import Document”

请添加图片描述

但是这里又出现了一个问题

由于我是使用anaconda的python环境

需要更换为本地的安装的python3.11
请添加图片描述

我还是使用之前项目的3.11(同一个版本),换了之后同样出现tk无法查找模块的话

先查找本机python匹配的版本

brew search python-tk
==> Formulae
python-tk@3.10     python-tk@3.9       python@3.7          python@3.9 
python-tk@3.11      python-yq           python@3.8

最后安装

brew install python-tk@3.11

最后安装tkinterMessagebox,安装好后如下图

请添加图片描述

代码

from tkinter import *
from tkinter import messageboximport mysql.connector
from docx import Document
from tabulate import tabulate# 连接到MySQL数据库
def connect_to_database():host = host_entry.get()user = user_entry.get()password = password_entry.get()database = database_entry.get()try:conn = mysql.connector.connect(host=host,port=3306,user=user,password=password,database=database)return connexcept mysql.connector.Error as err:messagebox.showerror("错误", f"连接到MySQL数据库时出错:{err}")return None# 获取数据库中的表信息及字段注释
def get_table_info(conn):tables_info = []if conn:cursor = conn.cursor()cursor.execute("SHOW TABLES")tables = cursor.fetchall()for table in tables:table_name = table[0]cursor.execute(f"DESCRIBE {table_name}")table_structure = cursor.fetchall()tables_info.append({"table_name": table_name,"structure": table_structure})cursor.close()return tables_info# 获取字段注释
def get_field_comment(table_name, field_name):cursor = conn.cursor()cursor.execute(f"SHOW FULL COLUMNS FROM {table_name} WHERE Field = '{field_name}'")column_info = cursor.fetchone()comment = column_info[8]  # 注释信息在第9个元素中cursor.close()return comment# 生成Markdown格式的数据库文档
def generate_markdown_documentation(tables_info):documentation = "# 数据库文档\n\n"documentation += f"数据库地址:{host_entry.get()}\n"documentation += f"用户名:{user_entry.get()}\n"documentation += f"数据库名称:{database_entry.get()}\n\n"for table_info in tables_info:table_name = table_info["table_name"]structure = table_info["structure"]documentation += f"## {table_name}\n\n"headers = ["字段", "类型", "允许空值", "键", "默认值", "额外信息", "注释"]  # 添加注释列rows = []for field_info in structure:rows.append(list(field_info) +[get_field_comment(table_name, field_info[0])])  # 获取字段注释并添加到行中documentation += tabulate(rows, headers, tablefmt="pipe") + "\n\n"return documentation# 生成docx格式的数据库文档
def generate_docx_documentation(tables_info):doc = Document()doc.add_heading('数据库文档', 0)doc.add_paragraph(f"数据库地址:{host_entry.get()}")doc.add_paragraph(f"用户名:{user_entry.get()}")doc.add_paragraph(f"数据库名称:{database_entry.get()}")for table_info in tables_info:table_name = table_info["table_name"]structure = table_info["structure"]doc.add_heading(table_name, level=1)# 创建带边框的表格table = doc.add_table(rows=1, cols=7)table.style = 'Table Grid'  # 设置表格样式为带边框的样式table.autofit = False  # 禁止自动调整列宽hdr_cells = table.rows[0].cellshdr_cells[0].text = '字段'hdr_cells[1].text = '类型'hdr_cells[2].text = '允许空值'hdr_cells[3].text = '键'hdr_cells[4].text = '默认值'hdr_cells[5].text = '额外信息'hdr_cells[6].text = '注释'  # 添加注释列for field_info in structure:row_cells = table.add_row().cellsrow_cells[0].text = field_info[0]row_cells[1].text = field_info[1]row_cells[2].text = field_info[2]row_cells[3].text = field_info[3]row_cells[4].text = field_info[4] if field_info[4] is not None else ""row_cells[5].text = field_info[5]row_cells[6].text = get_field_comment(table_name,field_info[0])  # 获取并显示字段注释return doc# 创建标签和输入框
def create_input_fields(root, fields):entries = {}for row, (label_text, entry_text) in enumerate(fields):label = Label(root, text=label_text)label.grid(row=row, column=0, padx=10, pady=10, sticky="w")entry = Entry(root)entry.grid(row=row, column=1, padx=10, pady=10)entry.insert(0, entry_text)entries[label_text] = entry# 添加文档类型选择器label = Label(root, text="文档类型:")label.grid(row=len(fields), column=0, padx=10, pady=10, sticky="w")doc_type = StringVar(root)doc_type.set("Markdown")  # 默认选择 Markdowndoc_type_menu = OptionMenu(root, doc_type, "Markdown", "Docx")doc_type_menu.grid(row=len(fields), column=1, padx=10, pady=10, sticky="w")entries["文档类型:"] = doc_typereturn entries# 生成文档
def generate_document():global conn  # 在函数内部使用全局变量 connconn = connect_to_database()if conn:tables_info = get_table_info(conn)if entries["文档类型:"].get() == "Markdown":  # 获取文档类型documentation = generate_markdown_documentation(tables_info)with open("数据库文档.md", "w", encoding="utf-8") as file:file.write(documentation)messagebox.showinfo("成功", "Markdown文档生成成功!")elif entries["文档类型:"].get() == "Docx":doc = generate_docx_documentation(tables_info)doc.save("数据库文档.docx")messagebox.showinfo("成功", "Docx文档生成成功!")# 创建主窗口
root = Tk()
root.title("数据库文档生成器")
root.geometry("400x300")# 标签和输入框的内容
fields = [("主机地址:", ""), ("用户名:", ""), ("密码:", ""), ("数据库名称:", "")]
# 创建标签和输入框
entries = create_input_fields(root, fields)
# 获取输入框的内容
host_entry = entries["主机地址:"]
user_entry = entries["用户名:"]
password_entry = entries["密码:"]
database_entry = entries["数据库名称:"]
# 生成文档按钮
generate_button = Button(root, text="生成文档", command=generate_document)
generate_button.grid(row=len(fields) + 1, columnspan=2, padx=10, pady=10)
root.mainloop()

效果

请添加图片描述

请添加图片描述

最后markdown格式会生成在py文件的同级目录下

请添加图片描述

请添加图片描述

总结

还是需要一步一步来,打好基础,比如我现在虽然写完文档了,程序可以跑了,但是依旧不是很懂基本的python设置,所以基础真的很重要,后面找个时间好好看看基础部分

参考

https://blog.csdn.net/tekin_cn/article/details/135271779

https://zhuanlan.zhihu.com/p/692851609

https://juejin.cn/post/7346580626318983180

https://blog.csdn.net/qq_44874645/article/details/109311212

这篇关于MacOS13-将数据库转为markdown,docx格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1029132

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

MybatisPlus中removeById删除数据库未变解决方案

《MybatisPlus中removeById删除数据库未变解决方案》MyBatisPlus中,removeById需实体类标注@TableId注解以识别数据库主键,若字段名不一致,应通过value属... 目录MyBATisPlus中removeBypythonId删除数据库未变removeById(Se

在 Spring Boot 中连接 MySQL 数据库的详细步骤

《在SpringBoot中连接MySQL数据库的详细步骤》本文介绍了SpringBoot连接MySQL数据库的流程,添加依赖、配置连接信息、创建实体类与仓库接口,通过自动配置实现数据库操作,... 目录一、添加依赖二、配置数据库连接三、创建实体类四、创建仓库接口五、创建服务类六、创建控制器七、运行应用程序八