读取DM数据库

This commit is contained in:
2026-02-27 17:06:56 +08:00
parent 0c0a295f09
commit df46812eff
12 changed files with 485 additions and 30 deletions

View File

@@ -6,13 +6,20 @@
## 目录结构
```
project/
├── config/
│ ├── config.yaml # 配置文件(推荐,支持注释)
│ └── config.json # 配置文件备选
├── data/
│ ├── raw_data_sample.json # 原始输入数据(包含噪声和错误
│ ├── raw_data_sample.json # 原始输入数据(JSON 模式
│ └── cleaned_data_final.json # 清洗后的输出数据
├── src/
── cleaner.py # 清洗运行程序
── cleaner.py # 清洗运行程序
│ └── data_loader.py # 数据加载JSON/达梦)
├── report/
│ └── detailed_cleaning_report.json # 详细清洗报告
├── scripts/
│ └── inspect_dm_tables.py # 达梦表结构查看(部署时用)
├── .env.example # 环境变量示例(含 DM_PASSWORD
└── README.md # 项目说明文档
```
@@ -50,15 +57,54 @@ project/
- 时间戳统一为 ISO-8601 格式
- 输出清洗后 JSON 及详细报告(含各步骤的统计与示例)
## 数据源配置
程序支持两种数据源,通过 `config/config.yaml``config/config.json` 中的 `source` 切换:
| source | 适用场景 | 说明 |
|--------|--------------|------|
| `json` | 开发、无数据库 | 从 `data/raw_data_sample.json` 读取 |
| `db` | 生产、有达梦库 | 从达梦数据库指定表读取 |
### 开发阶段(当前设备无达梦)
保持 `source: json`,直接使用本地 JSON 文件即可。
### 生产阶段(部署到有达梦的设备)
`OBJECTIVE_INSTANCE` 表结构与 `raw_data_sample.json` 一致,配置中已设为 `db.table: OBJECTIVE_INSTANCE`,直接查询即可。
1. **修改配置**`source: db`,端口 `5080`、表 `OBJECTIVE_INSTANCE` 已预设;
2. **设置密码**`export DM_PASSWORD=你的密码`
3. **运行清洗**`python src/cleaner.py`
若需自定义查询(如加 WHERE 条件),可清空 `table`,在 `db.query` 中写完整 SQL。
### 密码注入与安全说明
**⚠️ 安全原则:切勿将达梦密码写入配置文件或源代码。**
达梦模式通过环境变量 `DM_PASSWORD` 注入密码,支持以下方式:
| 方式 | 说明 |
|------|------|
| **终端** | `export DM_PASSWORD=你的密码`Linux/Mac`set DM_PASSWORD=你的密码`Windows CMD |
| **PyCharm** | Run → Edit Configurations → Environment variables → 添加 `DM_PASSWORD=你的密码` |
| **.env 文件** | 复制 `.env.example``.env`,填入 `DM_PASSWORD=你的密码`,并用 `python-dotenv` 加载(需自行集成) |
`inspect_dm_tables.py` 支持两种密码来源:优先环境变量 `DM_PASSWORD`,其次脚本内 `LOCAL_PASSWORD`。若使用 `LOCAL_PASSWORD`,务必执行 `git update-index --assume-unchanged scripts/inspect_dm_tables.py` 避免误提交。
配置文件(`config.yaml` / `config.json`)中仅配置 `host``port``user``schema``table` 等,**不包含 password**。本项目源代码中不包含任何硬编码密码。
## 快速开始
### 1. 环境依赖
本项目仅依赖 Python 标准库及 NumPy/Pandas
```bash
pip install numpy pandas
pip install -r requirements.txt
```
核心依赖:`numpy``pandas``PyYAML`。达梦模式需额外安装 `dmPython`
### 2. 运行清洗
在项目根目录下执行:
@@ -66,7 +112,7 @@ pip install numpy pandas
python src/cleaner.py
```
程序会读取 `data/raw_data_sample.json`,处理后生成:
默认从 JSON 读取,处理后生成:
- `data/cleaned_data_final.json`(清洗后的数据)
- `report/detailed_cleaning_report.json`(详细清洗报告)