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 会通过:
jaydebeapiJPype1- 达梦 JDBC jar
- 本机 JVM
来建立连接。
JDBC 方式需要本机安装 64 位 JDK / JRE。
2. 自动查找 JVM
后端会主动查找有效的 jvm.dll,常见路径包括:
JAVA_HOME\bin\server\jvm.dllJAVA_HOME\jre\bin\server\jvm.dllC:\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 会:
- 将 whl 解压到应用数据目录。
- 把解压目录加入
sys.path。 - 查找
.pyd所在目录并加入sys.path。 - 将包含
.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_TABLES 或 ALL_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 后,会自动:
- 安装 Node.js 和 Python 环境。
- 安装前端和后端依赖。
- 构建 Windows 安装包和解压版。
- 创建 GitHub Release。
- 上传
.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 和数据库管理工具,逐步扩展为支持多数据库、多上下文、多驱动管理的本地桌面数据库客户端。
这次阶段性更新主要集中在两个方向:
- 补齐 MongoDB 能力:支持集合浏览、字段推断、文档预览、shell 风格语句和 AI 上下文。
- 增强达梦 DM 能力:支持 JDBC / pyd / whl 驱动管理,每个连接独立选择驱动,并修复达梦 JDBC 元数据和数据预览中的兼容性问题。
如果你也经常在数据库客户端和 AI 工具之间来回切换,或者需要一个本地运行、支持多数据库的 AI 数据库工具,可以试试 DataDjinn。
项目地址:
text
https://github.com/vhukze/DataDjinn
欢迎 Star、试用和反馈。