# read_db_write_docx **Repository Path**: cyys/read_db_write_docx ## Basic Information - **Project Name**: read_db_write_docx - **Description**: 将ddl导出为doc文档 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-13 - **Last Updated**: 2025-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # python小工具:从数据库自动导出表结构到docx(数据库验收文档) # 需求场景和功能说明 项目验收需要提交《数据库验收文档》, 需要把数据库表结构信息写到word文档中,比较懒,不想手工一个个写;于是顺手用python写了个小工具,源代码参考[read_db_write_docx](https://github.com/perfectstorm88/read_db_write_docx), 实现下列功能: - 读取数据库获取表结构信息(支持MySQL、ORACLE、SQLServer) - 把表结构信息转换为docx的表格 - 读取一个docx模板文件,写到word中的指定位置 ![image](https://user-images.githubusercontent.com/37857943/95836145-aa074200-0d71-11eb-84d0-ade0168b7ba9.png) # 运行环境 - python 3.6 及以上 - 依赖库:python-docx、pymysql、pymssql、cx_Oracle # 使用说明 **下载源码并安装** ``` git clone https://github.com/perfectstorm88/read_db_write_docx cd read_db_write_docx pip install -r requirements.txt ``` **修改配置参数:** - 修改config.yml中的db_info为自己数据库的链接方式 - 修改config.yml中的word_def为自己需要写到word中的表名 - 也可以修改自己的docx模板,修改文档中的锚点(即把表格写到哪个目录下),对应word_def.anchor参数 **执行程序** ``` python read_db_write_docx.py ``` # 使用样例: 模板样例 ![image](https://user-images.githubusercontent.com/37857943/95713613-6b05bd80-0c99-11eb-824d-b9b8c4ad581f.png) 配置参数(config.yml)如下 ```yaml db_info: db_type: 'mysql' # 也可以支持mysql、oracle、sqlserver三种类型 host: 'localhost' port: 3306 user: root password: 'root' db: 'mytest' charset: "utf8" template: './template/模板:YY系统_数据库结构设计说明书.docx' # 原始docx文件 output: './xx验收文档.docx' # 输出文档 word_def: - anchor: 物理结构设计 # 对应原始docx文件中的锚点,即写入到docx文件的哪个位置 tables: # 定义了哪些表结构需要导出,如果不定义该字段,则导出所有表 - dept__医疗机构 # 表名__中文名 - dw_applyexamine__审核记录表 - menu__菜单表 - role__角色表 ``` 其中`word_def.tables` 定义了哪些表结构需要导出,如果不定义该字段,则默认把该数据库(`db_info.db`)下的所有表结构都导出来 执行`python read_db_write_docx.py`后,输出内容如下: ![image](https://user-images.githubusercontent.com/37857943/95713733-9e484c80-0c99-11eb-9e4f-9f350d61a803.png) # 参考 - https://python-docx.readthedocs.io/en/latest/user/quickstart.html - https://github.com/python-openxml/python-docx/issues/156 在一段后面插入表格 - https://github.com/python-openxml/python-docx/issues/823 如何根据文本内容找到某一段 - https://github.com/python-openxml/python-docx/issues/33 在docx中删除一个段落 - [分享一个MySQL数据库表结构导出word文档最方便的方法](https://www.hotbak.net/key/MYSQL数据库表结构导出成WORD文档.html): 网上的一个小工具,不支持mac,而且只是把表结构导成html,还需要手工调整格式,略麻烦些 - https://stackoverflow.com/questions/33069697/how-to-setup-cell-borders-with-python-docx 增加表边框