# pgm **Repository Path**: shaoninghouse/pgm ## Basic Information - **Project Name**: pgm - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-02 - **Last Updated**: 2025-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PGM - PostgreSQL管理平台 PGM(PostgreSQL Management)是一个基于Go语言开发的动态数据库管理平台,能够自动根据PostgreSQL数据库中的表结构生成管理界面,提供完整的CRUD(创建、读取、更新、删除)操作功能。 ## 🚀 主要特性 - **自动化界面生成**: 根据PostgreSQL表结构自动生成管理页面 - **动态API**: 为每个表自动生成RESTful API接口 - **数据库内省**: 自动分析数据库表、字段、主键、外键等信息 - **Web管理界面**: 基于Bootstrap的现代化Web界面 - **灵活配置**: 支持表映射配置,自定义字段显示和操作权限 - **分页查询**: 支持大数据量的分页展示 - **搜索过滤**: 支持跨字段的模糊搜索 - **批量操作**: 支持批量删除等操作 - **响应式设计**: 支持移动设备访问 ## 📋 系统要求 - Go 1.21+ - PostgreSQL 9.5+ - 现代Web浏览器 ## 🛠️ 安装部署 ### 1. 克隆项目 ```bash git clone cd pgm ``` ### 2. 安装依赖 ```bash go mod download ``` ### 3. 配置数据库 编辑 `configs/config.yaml` 文件: ```yaml database: host: localhost port: 5432 user: postgres password: your_password dbname: your_database sslmode: disable timezone: UTC ``` ### 4. 构建项目 ```bash go build -o pgm cmd/server/main.go ``` ### 5. 运行服务 ```bash # 使用配置文件 ./pgm # 或使用命令行参数 ./pgm -db your_database -dbuser postgres -dbpass your_password ./pgm -dbhost 118.178.239.213 -port 35432 -db postgres -dbuser postgres -dbpass qwer2850. ``` ### 6. 访问系统 打开浏览器访问: http://localhost:8080 ## 📖 使用说明 ### 启动参数 - `-config`: 配置文件路径(默认: ./configs) - `-port`: 服务端口(默认: 8080) - `-db`: 数据库名称 - `-dbhost`: 数据库主机 - `-dbuser`: 数据库用户名 - `-dbpass`: 数据库密码 ### 示例 ```bash # 连接到本地PostgreSQL数据库 ./pgm -db myapp -dbuser postgres -dbpass mypassword # 使用自定义端口 ./pgm -port 9090 -db myapp # 连接到远程数据库 ./pgm -dbhost 192.168.1.100 -db myapp -dbuser postgres ``` ## 🔧 配置说明 ### 基础配置 (config.yaml) ```yaml server: port: 8080 host: localhost mode: debug # debug, release, test database: host: localhost port: 5432 user: postgres password: "" dbname: "" sslmode: disable timezone: UTC web: static_path: ./web/static template_path: ./web/templates ``` ### 表映射配置 (table_mapping.yaml) ```yaml mappings: users: display_name: "用户管理" description: "系统用户信息管理" icon: "person" fields: id: display_name: "用户ID" readonly: true email: display_name: "邮箱地址" required: true validation: "email" status: display_name: "状态" type: "select" options: - label: "激活" value: "active" - label: "禁用" value: "disabled" operations: create: true read: true update: true delete: true ``` ## 📚 API文档 ### 表管理API - `GET /api/tables` - 获取数据库表列表 - `GET /api/tables/{tableName}` - 获取表详细信息 - `GET /api/tables/{tableName}/stats` - 获取表统计信息 ### 数据管理API - `GET /api/data/{tableName}` - 获取表记录列表(支持分页、搜索、排序) - `GET /api/data/{tableName}/{id}` - 获取单个记录 - `POST /api/data/{tableName}` - 创建新记录 - `PUT /api/data/{tableName}/{id}` - 更新记录 - `DELETE /api/data/{tableName}/{id}` - 删除记录 - `DELETE /api/data/{tableName}/batch` - 批量删除记录 ### 查询参数 分页查询支持以下参数: - `page`: 页码(默认: 1) - `page_size`: 每页大小(默认: 20,最大: 100) - `search`: 搜索关键词 - `order_by`: 排序字段 - `order`: 排序方向(asc/desc) ## 🏗️ 项目结构 ``` pgm/ ├── cmd/ # 主程序入口 │ └── server/ ├── internal/ # 内部包 │ ├── config/ # 配置管理 │ ├── database/ # 数据库操作 │ ├── introspect/ # 数据库内省 │ ├── generator/ # 动态API生成 │ ├── handler/ # HTTP处理器 │ ├── mapping/ # 映射配置 │ └── models/ # 数据模型 ├── web/ # 前端资源 │ ├── static/ # 静态文件 │ └── templates/ # HTML模板 ├── configs/ # 配置文件 └── docs/ # 文档 ``` ## 🎯 核心功能 ### 数据库内省 系统启动时会自动分析PostgreSQL数据库结构,包括: - 表名和注释 - 字段类型和属性 - 主键和外键关系 - 字段约束信息 ### 动态API生成 根据表结构自动生成标准的RESTful API: - 支持所有基本CRUD操作 - 自动处理数据类型转换 - 支持复杂查询条件 - 提供统一的错误处理 ### Web管理界面 提供直观的Web界面: - 响应式设计,支持移动设备 - 表格展示数据,支持排序和筛选 - 表单自动生成,支持字段验证 - 批量操作功能 ## 🔒 安全考虑 - 支持数据库连接加密(SSL) - 输入数据验证和清理 - SQL注入防护 - XSS攻击防护 ## 🚧 开发计划 - [ ] 用户认证和权限管理 - [ ] 数据导入导出功能 - [ ] 更多数据库类型支持 - [ ] API文档自动生成 - [ ] 数据关系图可视化 - [ ] 数据备份和恢复 - [ ] 插件系统 ## 🤝 贡献指南 1. Fork 项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 📞 联系方式 如有问题或建议,请提交 Issue 或联系开发团队。 --- **PGM** - 让PostgreSQL数据库管理变得简单高效!