feat(web): 三数据库适配(MySQL/达梦/Oracle)+ 连接默认值独立配置
【Oracle 适配 — 端到端接入】
- web/core/db_adapter.py
· 新增 to_oracle_kwargs(),oracledb 1.4.x 关键字映射
· _select_driver() 新增 oracle 分支,未安装 oracledb 时给中文友好报错
· _ensure_oracle_client() 自动检测 Instant Client,老 Oracle 切 thick 模式
· DBConfig.oracle_client_dir 字段(显式 lib_dir)
· TEXT_TYPES 补 Oracle 类型(nclob / long)
- web/sql/info_schema/list_columns.oracle.sql + list_tables.oracle.sql
· 新增 Oracle 方言的字典查询模板(ALL_TAB_COLUMNS / ALL_TABLES)
· 表注释 LEFT JOIN ALL_TAB_COMMENTS(同达梦结构)
- web/sql/standards/{sample_field_groups,sample_field_groups_single,
sample_field_pairs,sample_field_pairs_two_text}.sql
· \`\${col}\` → \${col | quote} 跨方言重构,加新数据库零 SQL 改动
- web/sql/loader.py:dialect 白名单加 "oracle"
- web/requirements.txt:锁定 oracledb>=1.4.2,<2.0(兼容 Oracle 11.2)
- web/start.py:start 脚本新增 oracledb / dmPython 可选组件检测
- web/app.py / web/core/__init__.py / web/core/step_impl/__init__.py /
web/core/models.py / web/configs/defaults.yaml / web/README.md
· 描述/注释/枚举更新为「MySQL / 达梦 / Oracle」
· models.ConnectRequest 加 oracle_client_dir 字段
· README 加 Oracle 行 + 三端口映射说明
【达梦适配 — 跑通实测】
- web/core/db_adapter.py
· to_dm_kwargs() 改用 server= 关键字(不是 host=),删 dmPython 不支持的
schema / charset / connect_timeout 参数(C 扩展传错会 SystemError 吞真实异常)
· _rows_as_dicts() 统一 PyMySQL Dict / tuple 两种行格式
· fetchall / fetchone 从 cur.description 取列名兜底
· dmPython SystemError 增强日志(提示真实原因 + 给排查脚本路径)
- web/sql/info_schema/list_columns.dameng.sql
· 列注释 LEFT JOIN ALL_COL_COMMENTS(修 [CODE:-2207] C.COMMENTS)
- web/sql/info_schema/list_tables.dameng.sql
· BYTES → NULL(达梦 ALL_TABLES 无此列)
· COMMENTS → LEFT JOIN ALL_TAB_COMMENTS(达梦 ALL_TABLES 无此列)
· CREATED / LAST_DDL_TIME → NULL(达梦 ALL_TABLES 无时间戳)
真要看时间戳得 LEFT JOIN ALL_OBJECTS,按 OBJECT_TYPE='TABLE' 过滤
【UI 改进】
- web/static/index.html
· 数据库类型三选项(MySQL / 达梦 / Oracle)
· onDbTypeChange 端口切换改用 DB_DEFAULT_PORTS 映射表
(mysql:3306 / dameng:5236 / oracle:1521),加守卫保留用户自定义端口
· loadDbDefaults() 启动时从 /api/db-defaults 读连接默认值填表单
· charset 下拉新增 al32utf8 / zhs16gbk(Oracle NLS 字符集)
· Oracle radio 暂未实装完成,先注释隐藏(后端代码保留,放开零成本)
【连接默认值独立配置】
- web/configs/db_defaults.yaml(新增,.gitignore 排除,存真实凭据)
- web/api/routes.py:新增 GET /api/db-defaults 端点
- .gitignore:补 web/configs/db_defaults.yaml 防止真实凭据误提交
【诊断与日志】
- scripts/_probe_dm.py:达梦连接独立诊断工具(C 扩展吞异常时排查用)
- docs/WORKLOG.md:本次任务完整工作记录(含三库字典表差异表)
【未提交】
- web/configs/db_defaults.yaml(真实密码,gitignore 排除)
- scripts/_tmp_build_violations_md.py(一次性调试脚本,硬编码绝对路径)
- data_dictionary/standard_fields_violations_report.md(生成报告,非源码)
Showing
scripts/_probe_dm.py
0 → 100644
Please register or sign in to comment