# er图生成器 **Repository Path**: lzx0604/er-graph-generator ## Basic Information - **Project Name**: er图生成器 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-18 - **Last Updated**: 2026-06-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SQL ER 图生成器 > 根据 SQL 文件自动生成数据库 ER 图的可视化工具 > 专为大学生毕业设计、课程设计打造 > 作者:[极客代码改造站](https://geekcode.top) ## 一、项目简介 在数据库相关的毕业设计或课程设计中,ER 图(实体-关系图)是必不可少的一部分。手动使用 Visio、PowerDesigner 等工具绘制 ER 图费时费力,而且当数据库表结构发生变化时还需要重新绘制。 本项目是一款 **基于 Python + Tkinter 开发的 GUI 可视化工具**,能够: - 自动读取 `.sql` 文件 - 智能解析 `CREATE TABLE` 语句 - 自动识别主键(PK)、外键(FK)关系 - 自动生成规范、美观的 ER 图 - 支持手动拖动调整布局 - 一键导出高清 PNG 图片 ## 二、功能特点 | 功能 | 说明 | |------|------| | SQL 自动解析 | 支持 MySQL 风格 CREATE TABLE,自动提取表名、字段、类型、主键、外键 | | 智能关系识别 | 支持表内 FOREIGN KEY 约束和 ALTER TABLE ADD FOREIGN KEY | | 自动布局 | 根据外键依赖关系自动分层排列 | | 手动调整 | 可用鼠标拖动表格,调整到自己满意的布局 | | 缩放浏览 | 工具栏放大/缩小/重置,或 Ctrl+鼠标滚轮缩放 | | 滚动浏览 | 鼠标滚轮上下滚动,Shift+滚轮左右滚动 | | 高清导出 | 导出 PNG 图片,保留当前手动调整后的布局 | | 单文件运行 | 已打包为单个 exe,双击即用,无需安装 Python | ## 三、界面预览 ![ER 图生成器界面](demo.png) ## 四、快速开始 ### 方式一:直接运行 exe(推荐) 1. 进入 `dist` 目录 2. 双击 `ER图生成器.exe` 3. 点击「打开 SQL 文件」选择你的 `.sql` 文件 4. 程序自动生成 ER 图 5. 拖动表格调整布局 6. 点击「导出 PNG」保存图片 ### 方式二:运行 Python 源码 ```bash # 1. 安装依赖 pip install -r requirements.txt # 2. 运行程序 python er_generator.py ``` ## 五、操作说明 ### 工具栏按钮 | 按钮 | 功能 | |------|------| | 打开 SQL 文件 | 选择并加载 .sql 文件 | | 生成 ER 图 | 重新解析 SQL 并生成 ER 图 | | 导出 PNG | 将当前 ER 图保存为 PNG 图片 | | 放大 / 缩小 / 重置 | 调整 ER 图显示比例 | ### 快捷键 | 快捷键 | 功能 | |--------|------| | `Ctrl + O` | 打开 SQL 文件 | | `Ctrl + G` | 生成 ER 图 | | `F5` | 生成 ER 图 | | `Ctrl + S` | 导出 PNG | ### 鼠标操作 | 操作 | 功能 | |------|------| | 滚轮 | 上下滚动画布 | | `Shift + 滚轮` | 左右滚动画布 | | `Ctrl + 滚轮` | 放大 / 缩小 | | 按住表格拖动 | 调整表格位置 | ## 六、支持的 SQL 语法 本项目主要支持 MySQL 风格的 SQL 语句: ```sql CREATE TABLE `student` ( `id` INT NOT NULL AUTO_INCREMENT COMMENT '学生ID', `name` VARCHAR(50) NOT NULL COMMENT '姓名', `major_id` INT NOT NULL COMMENT '专业ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生表'; ALTER TABLE `student` ADD CONSTRAINT `fk_student_major` FOREIGN KEY (`major_id`) REFERENCES `major` (`id`); ``` 支持: - `CREATE TABLE`(含 `IF NOT EXISTS`) - `PRIMARY KEY`(单列 / 复合主键) - `FOREIGN KEY`(表内约束) - `ALTER TABLE ... ADD FOREIGN KEY` - `UNIQUE KEY` / `KEY` / `INDEX`(自动忽略,不影响 ER 图) - 字段 `COMMENT` 注释 - 反引号 `` ` ``、双引号 `"`、方括号 `[]` 包裹的标识符 ## 七、项目结构 ``` er_diagram_generator/ ├── dist/ │ └── ER图生成器.exe # 可直接运行的程序 ├── er_generator.py # 主程序源码 ├── sample.sql # 示例 SQL(学生选课系统) ├── build_exe.py # PyInstaller 打包脚本 ├── requirements.txt # Python 依赖 ├── demo.png # 示例效果图 └── README.md # 项目说明文档 ``` ## 八、技术栈 - **Python 3.10+**:核心开发语言 - **Tkinter**:GUI 界面 - **Pillow (PIL)**:图片渲染与导出 - **PyInstaller**:打包为 exe ## 九、打包成 exe 如果你修改了源码,可以重新打包: ```bash # 1. 安装 PyInstaller pip install pyinstaller # 2. 执行打包脚本 python build_exe.py # 3. 打包完成后,exe 位于 dist/ER图生成器.exe ``` ## 十、常见问题 **Q:为什么导出的 PNG 和界面显示不一样?** A:导出 PNG 时会保留你手动拖动后的布局。如果界面和导出不一致,请确认拖动后没有点击「生成 ER 图」(这会重新自动布局)。 **Q:为什么有些 SQL 解析不到表?** A:请检查 SQL 是否为 MySQL 风格,且包含 `CREATE TABLE` 语句。目前主要支持标准 CREATE TABLE 语法。 **Q:exe 文件很大,正常吗?** A:正常。因为 PyInstaller 打包时会包含 Python 解释器、Tkinter、Pillow 等依赖,所以单文件 exe 约 20MB 左右。 ## 十一、更新日志 ### v1.0 - 实现 SQL 自动解析 - 实现 ER 图自动生成 - 支持表格拖动调整布局 - 支持缩放、滚动浏览 - 支持导出 PNG - 增加标题链接「极客代码改造站」 ## 十二、版权说明 本项目由 [极客代码改造站](https://geekcode.top) 开发,可用于学习、毕业设计、课程设计等场景。