DataDjinn 更新记录:从 AI 数据库客户端到 MongoDB + 达梦 DM 驱动管理增强

DataDjinn 更新记录:从 AI 数据库客户端到 MongoDB + 达梦 DM 驱动管理增强

如果你之前关注过 DataDjinn,应该知道它最开始的定位是:

一款把传统数据库管理能力和 AI 自然语言交互结合起来的本地桌面数据库客户端。

项目地址:

text 复制代码
https://github.com/vhukze/DataDjinn

这次整理一版新的 CSDN 发布内容,主要记录从上一篇帖子内容到目前版本为止,DataDjinn 新增和优化的功能。

当前版本已经不只是一个支持 SQLite / MySQL / PostgreSQL / 达梦的 AI 数据库客户端,还进一步补齐了 MongoDB 支持,并重点增强了达梦 DM 的外部驱动管理、JDBC 连接、dmPython whl 加载和表数据预览能力。


一、目前 DataDjinn 是什么?

DataDjinn 是一个本地运行的桌面数据库管理工具,技术栈主要包括:

  • Electron
  • React
  • TypeScript
  • Ant Design
  • Monaco Editor
  • FastAPI
  • SQLAlchemy
  • OpenAI 兼容 API

它提供传统数据库客户端常见的能力:

  • 数据库连接管理
  • 左侧连接树
  • 库 / Schema / 表 / 视图 / 触发器 / 存储过程等对象浏览
  • SQL 编辑器
  • 查询结果展示
  • 表数据预览
  • 表格单元格编辑
  • 备份、导出、导入
  • 深色 / 浅色主题
  • 本地密码安全存储

同时,它内置 AI 对话面板,可以读取当前连接、当前库、当前表、当前 SQL 编辑器内容,并根据数据库结构帮助生成 SQL、解释 SQL、分析表结构、创建表或插入测试数据。


二、本阶段新增:MongoDB 支持

上一篇内容中,DataDjinn 主要围绕关系型数据库展开。

现在已经新增 MongoDB 支持。

1. MongoDB 连接管理

现在可以在 DataDjinn 中创建 MongoDB 连接:

  • 支持主机、端口配置。
  • 用户名和密码可选。
  • 默认端口为 27017
  • 可以在左侧连接树中加载数据库和集合。

2. MongoDB 集合浏览和字段推断

MongoDB 没有固定表结构,所以 DataDjinn 做了集合字段推断:

  • 支持浏览数据库和集合。
  • 支持基于集合前 100 条文档推断字段。
  • 可以展示字段名称和字段类型。
  • 集合可以复用表格预览能力展示文档数据。

这对临时查看 MongoDB 文档结构非常方便,不需要先手写 find() 再观察字段。

3. MongoDB 查询和写入支持

目前支持常见 MongoDB shell 风格语句:

javascript 复制代码
db.users.find({})
javascript 复制代码
db.createCollection("users")
javascript 复制代码
db.users.insertOne({ name: "张三", age: 18 })
javascript 复制代码
db.users.insertMany([
  { name: "张三", age: 18 },
  { name: "李四", age: 20 }
])

支持能力包括:

  • find({}) 只读查询。
  • createCollection() 创建集合。
  • insertOne() 插入单条测试数据。
  • insertMany() 插入多条测试数据。
  • 多条 MongoDB shell 风格语句一次执行。

4. MongoDB 导出

导出能力也扩展到了 MongoDB:

  • 支持 MongoDB 数据库导出。
  • 支持 MongoDB 集合导出。
  • MongoDB 导出格式为 JSON。

三、本阶段新增:AI Agent 支持 MongoDB 上下文

DataDjinn 的 AI 面板不只是聊天框,它会结合当前数据库上下文工作。

现在 AI Agent 已经支持 MongoDB 上下文。

1. AI 可以读取 MongoDB 集合结构

当你选中 MongoDB 数据库或集合时,可以直接问:

text 复制代码
这个集合有哪些字段?
text 复制代码
帮我看一下 users 集合里的数据结构适合怎么设计索引

AI 可以读取集合列表、字段推断结果和样本数据,再给出回答。

2. AI 可以创建集合和插入测试数据

你可以直接说:

text 复制代码
创建一个 users 集合,并插入 5 条测试数据

AI 不再只是生成文本或把语句写到编辑器里,而是可以通过内置工具完成实际操作。

为了避免复杂任务卡在多轮工具调用里,MongoDB 多语句执行也做了优化,可以一次执行多条 shell 风格语句。


四、本阶段新增:达梦 DM 驱动管理

这次另一个重点是达梦 DM。

之前达梦连接更多依赖固定的外部驱动路径,使用起来不够直观。现在 DataDjinn 增加了专门的达梦驱动管理能力。

1. 支持三类达梦外部驱动

目前驱动管理中支持添加三类达梦驱动:

驱动类型 文件类型 说明
JDBC jar .jar 通过 JDBC + JVM 连接达梦
dmPython pyd .pyd Windows 本地 Python native 驱动
dmPython whl .whl Python wheel 包,可能包含 .pyd / .dll native 文件

需要注意:

dmPython whl 不一定是纯 Python 驱动,它可能仍然包含 native 二进制文件,所以必须匹配当前 Python 版本、系统平台和位数。

2. 每个达梦连接可以独立选择驱动

现在新建或编辑达梦连接时,会出现"达梦驱动"选择项。

也就是说:

  • 先在驱动管理中添加 JDBC jar / pyd / whl。
  • 再在达梦连接信息中选择要使用的驱动。
  • 每个达梦连接可以选择不同驱动。

这样比全局自动选择驱动更清晰,也更适合本机同时存在多个达梦驱动的情况。

3. 驱动管理支持测试和删除

驱动管理现在支持:

  • 添加驱动。
  • 测试驱动文件是否存在、扩展名是否正确。
  • 删除驱动。
  • 启用 / 停用驱动。

五、本阶段新增:达梦 JDBC 连接支持

达梦 JDBC 连接是这次增强的重点之一。

1. JDBC jar + JVM 连接

如果选择 JDBC jar 驱动,DataDjinn 会通过:

  • jaydebeapi
  • JPype1
  • 达梦 JDBC jar
  • 本机 JVM

来建立连接。

JDBC 方式需要本机安装 64 位 JDK / JRE。

2. 自动查找 JVM

后端会主动查找有效的 jvm.dll,常见路径包括:

  • JAVA_HOME\bin\server\jvm.dll
  • JAVA_HOME\jre\bin\server\jvm.dll
  • C:\Program Files\Java\...
  • C:\Program Files\Eclipse Adoptium\...
  • C:\Program Files\Microsoft\...

找到后会显式启动 JVM,避免使用失效路径。

3. 自动加入 JDBC classpath

DataDjinn 会在 JVM 启动时加入达梦 JDBC jar;如果 JVM 已经启动,也会动态添加 classpath。


六、本阶段新增:达梦 dmPython whl 支持

除了 JDBC 和 pyd,这次还支持了 dmPython whl。

1. whl 文件兼容性校验

添加 whl 驱动时会校验:

  • 是否为 .whl 文件。
  • Python ABI 是否匹配,比如当前 Python 3.13 需要 cp313
  • 是否为 Windows 版本,比如需要 win_amd64
  • 是否误选了 Linux / manylinux / musllinux 版本。

如果选择了不匹配的 whl,会给出明确提示

2. whl 解压后加载 native 文件

Python native 扩展无法直接从 zip 里的 whl 加载。

所以 DataDjinn 会:

  1. 将 whl 解压到应用数据目录。
  2. 把解压目录加入 sys.path
  3. 查找 .pyd 所在目录并加入 sys.path
  4. 将包含 .pyd / .dll 的目录加入 DLL 搜索路径。

这样才能正确加载 dmPython whl 中的 native 扩展。


七、本阶段优化:达梦 Schema 创建和显示

达梦里"数据库"和传统 MySQL 的 CREATE DATABASE 语义不一样。

在 DataDjinn 中,达梦左侧树里的"新增数据库"现在按达梦语义创建 Schema。

1. 达梦新建库改为创建 Schema

之前如果直接执行:

sql 复制代码
CREATE DATABASE xxx

在达梦中可能会出现错误码 -2007

现在达梦分支改成:

sql 复制代码
CREATE SCHEMA xxx

这样更符合达梦实际使用方式。

2. 新建空 Schema 后也能显示

空 Schema 没有表、没有对象时,如果只从 ALL_TABLESALL_OBJECTS 查,很可能查不到。

现在列表优先使用更适合达梦 Schema 的元数据来源:

sql 复制代码
SELECT NAME FROM SYSOBJECTS WHERE TYPE$ = 'SCH' ORDER BY NAME

如果不兼容,再回退到其他系统视图。

同时,后端会返回实际创建出来的 Schema 名称,前端用这个真实名称刷新连接树,避免大小写不一致导致创建成功但界面不显示。


八、本阶段优化:达梦表数据预览

达梦表数据预览也做了不少兼容性处理。

1. 过滤内部分页列

达梦分页不像 MySQL 那样直接使用 LIMIT/OFFSET

DataDjinn 会使用 ROWNUM 包一层分页 SQL,因此内部会出现辅助列:

text 复制代码
__DATADJINN_RN

某些 JDBC 场景下可能返回成:

text 复制代码
_DATADJINN_RN

现在后端会过滤这些内部列,前端表格只展示真实业务字段。

2. JDBC Java 类型转换

达梦 JDBC 返回的列名和值可能是 Java 对象,例如 java.lang.String

这会导致 Pydantic 或 JSON 序列化失败。

现在后端会统一转换:

  • Java String → Python str
  • 日期 / 时间 → ISO 字符串
  • Decimal → 浮点数
  • bytes → hex 字符串
  • list / tuple / dict → 递归转换
  • 其他未知对象 → 字符串

这样表格预览、只读查询结果都能正常返回给前端。


九、本阶段优化:错误提示更清楚

为了减少"只看到 Internal Server Error,不知道真实原因"的情况,这次也优化了错误处理。

1. 后端统一返回 JSON 错误详情

FastAPI 增加了全局异常处理,未捕获异常也会返回:

json 复制代码
{
  "detail": "具体错误信息"
}

前端能直接展示真实错误。

2. Electron 请求层兼容非 JSON 错误

如果后端或其他接口返回非 JSON 文本,Electron 主进程也不会再因为 JSON.parse 失败而吞掉真实错误。

3. whl 驱动加载错误更明确

dmPython whl 加载失败时,会提示:

  • 当前 Python 版本。
  • whl 适用的 Python ABI。
  • 是否为 Linux / manylinux 包。
  • 已搜索的路径。

这样可以更快判断是不是下载错了驱动包。


十、本阶段优化:表格体验和大数据场景

除了数据库能力,这段时间表格交互也做了优化。

1. 行号选择体验优化

表格行号区域现在更适合用于选择:

  • 点击行号选择单行。
  • 按住行号拖动可以连续多选。
  • 点击空白区域可以取消选择。
  • 行号样式弱化,避免误认为业务字段。

2. 大数据表格性能优化

大数据表格里,列筛选的候选项如果提前计算,会影响打开速度。

现在改为打开筛选弹框时懒加载筛选选项,减少大表预览时的前端压力。

3. 虚拟滚动和选中色优化

表格的虚拟滚动、选中色、滚动条行为也做了调整:

  • 选中色和虚拟滚动兼容性更好。
  • 横纵滚动条改回 Ant Design / rc-virtual-list 原生滚动条。
  • 避免自定义滚动条带来的同步问题。

十一、打包发布优化

DataDjinn 已经配置 GitHub Actions 自动发布。

推送 v*.*.* 格式 tag 后,会自动:

  1. 安装 Node.js 和 Python 环境。
  2. 安装前端和后端依赖。
  3. 构建 Windows 安装包和解压版。
  4. 创建 GitHub Release。
  5. 上传 .exe 安装包和 .zip 解压包。

当前 Windows Release 仍提供两种包:

  • DataDjinn-x.x.x-setup.exe:安装包。
  • DataDjinn-x.x.x-win.zip:解压即用版。

另外,达梦驱动不默认内置到发布包中。

这样做的原因是:

  • 避免将用户本机或第三方达梦 DLL 打进发布包。
  • 降低 native DLL 被安全软件误判的概率。
  • 让用户根据自己的达梦版本和环境选择匹配驱动。

如果要连接达梦,请在驱动管理中添加本机可用的 JDBC jar、dmPython pyd 或 dmPython whl。


十二、目前支持的数据库汇总

当前 DataDjinn 支持:

数据库 当前能力
SQLite 本地文件连接、表结构读取、数据预览、SQL 查询
MySQL 连接管理、库表浏览、SQL 查询、备份、导出、导入、表数据编辑
PostgreSQL 数据库 / Schema / 表浏览、SQL 查询、Schema 上下文、备份、导出、导入
达梦 DM 外部 JDBC / pyd / whl 驱动管理、连接、Schema 浏览、表数据预览、AI 辅助操作
MongoDB 数据库 / 集合浏览、字段推断、文档预览、find 查询、创建集合、插入测试数据、JSON 导出

十三、适合哪些人?

我觉得 DataDjinn 适合这些场景:

  • 经常需要查看数据库结构和数据的后端开发。
  • 想用 AI 辅助生成 SQL 的开发者。
  • 希望减少数据库工具和 AI 工具之间复制粘贴的人。
  • 需要同时管理 SQLite / MySQL / PostgreSQL / 达梦 / MongoDB 的用户。
  • 需要本地运行,不希望数据库信息经过在线平台中转的人。
  • 正在使用国产达梦数据库,希望用外部驱动灵活连接的人。

十四、后续计划

后续还会继续完善:

  • 更完整的数据编辑能力。
  • 更强的表结构设计辅助。
  • 更多数据库类型支持。
  • 查询结果可视化。
  • AI 自动生成报表。
  • 更完善的导入导出格式。
  • MCP 能力集成。

总结

DataDjinn 目前已经从一个 AI 辅助 SQL 和数据库管理工具,逐步扩展为支持多数据库、多上下文、多驱动管理的本地桌面数据库客户端。

这次阶段性更新主要集中在两个方向:

  1. 补齐 MongoDB 能力:支持集合浏览、字段推断、文档预览、shell 风格语句和 AI 上下文。
  2. 增强达梦 DM 能力:支持 JDBC / pyd / whl 驱动管理,每个连接独立选择驱动,并修复达梦 JDBC 元数据和数据预览中的兼容性问题。

如果你也经常在数据库客户端和 AI 工具之间来回切换,或者需要一个本地运行、支持多数据库的 AI 数据库工具,可以试试 DataDjinn。

项目地址:

text 复制代码
https://github.com/vhukze/DataDjinn

欢迎 Star、试用和反馈。

相关推荐
Bigger1 小时前
现在面试官竟然这么问问题,你知道吗?😮
前端·人工智能·agent
YY&DS1 小时前
【无标题】
ai·持续部署
星辰AI1 小时前
AI 应用安全最佳实践:保护数据和系统安全
人工智能·ai·语言模型
岳小哥AI1 小时前
一首《谦比希铜矿之歌》厂歌火爆全网,背后是AI的数学本质
ai
周易宅1 小时前
Cladue Code自动升级2.1.156无法使用,回退到2.1.153并禁止自动升级,可用稳定版本2.1.153
ai·claude code
树獭非懒2 小时前
AI Agent 入门:理论、原理与5分钟代码实战
人工智能·llm·agent
John_ToDebug10 小时前
MCP 深度解析:大模型的“万能插头”
人工智能·经验分享·ai
云天AI实战派11 小时前
AI 智能体全流程实战:从 0 搭一个门店运营助手,用 API + 工具搜索 + 编码代理做出可复现闭环
人工智能·ai·智能体
哥不是小萝莉11 小时前
Agent 架构设计与能力构建
ai