n8n+MySQL实现数据库查询!

news/2025/9/23 18:37:00/文章来源:https://www.cnblogs.com/vipstone/p/19107711

为什么使用了 n8n 之后,会觉得惊喜?

因为使用他实在太方便了,但让这里的方便不单是本地部署、升级上的方便(dify 要启动 7 个服务,coze 要启动 9 个服务,而 n8n 一个服务就搞定了),而是他整体的便利性。例如他提供的 5000+ 模板方便创建工作流,还有他集成了 400+ 应用快速实现某些功能,等等这些都让 n8n 便的流行。

今天就以 n8n 集成 MySQL 数据库实现自然语言的查询为例,给大家演示一下他的便捷之处。

如下工作流,我们就实现了自然语言直接操作 MySQL 数据库的功能:

1

核心实现

要实现这个功能的核心有两个:

  1. 使用 AI Agent 生成 MySQL 语句。
  2. 使用 n8n 提供的 MySQL 应用插件执行 MySQL,并返回结果。

简单吧,要知道我们使用 dify 或 coze 是需要通过 mcp 调用方式的方式,或者是安装插件的方式才能实现 MySQL 数据库的查询,并且每次都需要重复配置 MySQL 连接信息。

而使用 n8n 直接用内置的 MySQL 插件就可以使用了,并且配置的 MySQL 连接凭证,后续可以重复使用(不用每次都配置)。

2

关键步骤

想要 n8n 执行效果好,需要提前把数据库结构给 AI Agent,或者生成 SQL 的质量会很差,这里可以使用 Navcat 等客户端工具将 SQL 脚本进行导出,然后使用以下提示词设置给大模型:

你是 MySQL 查询助手,专精于招聘管理系统数据库的高效、准确查询。你已连接到以下结构的数据库,并熟悉各表之间的业务逻辑关系,只返回最终生成好的 MySQL 语句。### 核心表结构说明#### 1. 简历表 `resume`
- 字段:`id`(主键), `name`, `phone`, `email`, `work_age`, `edu`, `age`, `state`(状态), `create_time`, `update_time`, `url`, `desc`, `interview_person`(冗余), `interview_time`(冗余)
- 状态值含义:- `-3`: 拒绝Offer- `-2`: 面试未通过- `-1`: 未通过筛选- `1`: 待处理- `2`: 通过筛选 / 面试中- `3`: 通过1面- `4`: 通过2面- `5`: 通过3面 / 待发Offer- `6`: 已发Offer / 入职#### 2. 面试表 `interview`
- 字段:`id`, `rid`(= `resume.id`), `interview_time`, `interview_person`, `professional_score`, `communication_score`, `teamwork_score`, `comprehensive_score`, `result`, `desc`, `evaluate`, `create_time`
- 每个面试记录都属于某个简历(`rid`)- 综合得分通常是前三项的加权或手动填写#### 3. Offer管理表 `offer`
- 字段:`id`, `name`, `email`, `position`, `department`, `salary`, `work_location`, `onboard_date`, `hr_name`, `created_time`, `updated_time`, `status`(5:待发, 6:已发, -3:拒绝), `remark`, `rid`(= `resume.id`)- 一条 Offer 对应一份简历的一次投递#### 4. 用户表 `user`
- 字段:`id`, `username`(唯一), `password`, `email`, `phone`, `status`(0:禁用, 1:启用), `avatar`, `create_time`, `update_time`
- 表示系统中的用户,如 HR、面试官、管理员#### 5. 角色表 `role`
- 字段:`id`, `role_name`, `description`, `status`(0:禁用, 1:启用)
- 常见角色:HR、面试官、管理员等#### 6. 用户角色关联表 `user_role`
- 字段:`id`, `user_id`, `role_id`
- 实现多对多关系:一个用户可以有多个角色,一个角色可分配给多个用户###  表间关键关联逻辑| 关系 | 说明 |
|------|------|
| `interview.rid` → `resume.id` | 面试属于某份简历的投递流程 |
| `offer.rid` → `resume.id` | Offer 发出来自某份简历 |
| `user_role.user_id` → `user.id` | 用户分配角色 |
| `user_role.role_id` → `role.id` | 角色绑定用户 |
| `interview.interview_person` ≈ `user.username` | 面试官通常是注册用户(无硬外键,但业务相关) |
| `offer.hr_name` ≈ `user.username` | 发 Offer 的 HR 应是系统用户 |###  你的能力要求#### 支持以下类型的查询需求:
- 根据姓名/手机号查询候选人完整面试进展
- 统计某个时间段内的面试安排、Offer 发放情况
- 查询某位面试官(HR)负责的面试/Offer数量
- 计算候选人平均面试得分、Offer通过率
- 多表联查:查看某人的简历 + 面试详情 + Offer信息
- 基于状态(state/status)的数据筛选与分组
- 时间范围过滤、排序、分页等常见操作#### ⚠️ 注意事项:
1. 始终优先使用 JOIN 替代子查询,除非必要;
2. 避免 `SELECT *`,明确列出所需字段;
3. 注意字段数据类型一致性,尤其是字符串与数字比较;
4. 不要对生产环境执行更新/删除操作,除非特别说明;
5. 注意 NULL 值处理,必要时使用 `COALESCE()` 或 `IS NULL`;
6. 利用索引字段加快查询速度(如 `idx_name`, `idx_email`, `idx_status`);
7. SQL 注入防护:不要拼接用户输入,推荐使用参数化查询(但你只需输出 SQL 即可)。### 输出规范请按以下格式返回 SQL 查询:
SELECT    r.name AS candidate_name,i.interview_time,o.position
FROMresume r
JOIN interview i ON r.id = i.rid
LEFT JOIN offer o ON r.id = o.rid
WHEREr.name = '张三'AND i.interview_time >= '2025-09-23'
ORDER BYi.interview_time DESC;

尽管我们这样写提示词,但 n8n 生成的结果依然会有特殊字符,此时 AI Agent 生成的结果我们可以使用正则表达式处理之后,再让 MySQL 组件进行执行才行,如下图所示:

3

这样我们就实现 n8n 直接查询数据库的功能了。

小结

关于提示词的文件读取问题,我们可以提前将提示词上传到 Docker 的目录中,使用 n8n 文件读取组件直接从目录中读取即可。当然如果数据库结构是可变的,我们还可以使用另外一个工作流,每次先查询当前数据库的数据结构,然后把最新的数据结构作为系统提示词给到 AI Agent,这样就能生成更精准的、动态的 SQL 语句了。

本文已收录到我的技术小站 www.javacn.site,其中包含的内容有:Spring AI、Spring AI Alibaba、LangChain4j、Dify、Coze、N8N、智能体(AI Agent)、MCP、Function Call、RAG、向量数据库、Prompt、多模态、向量数据库、嵌入模型、AI 常见面试问题等内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

My Tricks

tricks 和注意事项 【数据删除】构造题!!! 杂项多测未清空 没开 long long 如果正面处理不方便,可以考虑拆单个的贡献然后用差分 跳来跳去的或要操作很多次的考虑倍增 判断等比数列时考虑正负性,并用比例的性质来…

完整教程:机器学习入门,支持向量机

完整教程:机器学习入门,支持向量机pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

建设网站广州市wordpress发邮件接收验证码

如有错误或有补充,以及任何改进的意见,请在评论区留下您的高见,同时文中给出大部分命令的示例,即是您暂时无法在Linux中查看,您也可以知道各种操作的功能以及输出 如果觉得本文写的不错,不妨点个赞&#x…

网站建设构成技术要求教资注册网址

开发插件的都知道插件的content scripts和top window只共享Dom不共享window和其他数据,如果想拿挂载在window的数据还有点难度,下面会通过事件的方式传递cs和top window之间的数据写一个例子 代码 manifest.json 这里只搞了2个js,content.…

两学一做网站按钮图片小微企业名录

面向对象的基本原则:单一原则:引起一个类发生变化的原因只有一个 开放封闭原则:对于类的修改是封闭的,而对于类的扩展是开放的 依赖倒置原则:高层不依赖于底层,都应该依赖与抽象;抽象不依赖于…

做网站系统学校备案接入阿里云后原网站还能访问吗

1.2 课程架构介绍:STM32H5 芯片生命周期管理与安全调试 下面开始学习课程的第二节,简单介绍下STM32H5芯片的生命周期和安全调试,具体课程大家可以观看STM32官方录制的课程,链接:1.2. 课程架构介绍:STM32H5…

宁德商城网站建设wordpress找回文章

6.6:说明形参、局部变量以及局部静态变量的区别。编写一个函数,同时用到这三种形式。 Ans:形参及函数体内定义的变量,都是局部变量,必须进行初始化,否则会出现未定义行为,这是由于局部变量的生命…

移动互联网站建设修改网站的设计

本文主要介绍了Prompt设计、大语言模型SFT和LLM在手机天猫AI导购助理项目应用。 ChatGPT基本原理 “会说话的AI”,“智能体” 简单概括成以下几个步骤: 预处理文本:ChatGPT的输入文本需要进行预处理。 输入编码:ChatGPT将经过预…

月嫂网站模板企业网站推广服务协议

PHP 日期处理完全指南 引言 在PHP开发中,日期和时间处理是一个常见且重要的任务。PHP提供了丰富的内置函数来处理日期和时间,包括日期的格式化、计算、解析等。本文将详细介绍PHP中日期处理的相关知识,帮助读者全面理解和掌握这一技能。 1. PHP日期函数基础 1.1 date()函…

宁海县城镇建设局网站wordpress 提示

本文原文来自DataLearnerAI官方网站:ChatGPT内置隐藏debug功能:支持下载原始对话、可视化对话分支等 | 数据学习者官方网站(Datalearner) AIPRM的工作人员最近发现ChatGPT的客户端隐藏内置了一个新的debug特性,可以提高ChatGPT对话的问题调试…

网站系统里不能打印江苏高效网站制作公司

viewdata[alert]"alert(你好)"<script>viewdata[alert]</script> 在Controller存储数据 在 界面得到 关于 ViewData和ViewMode 点击这里 http://wanshiqian1221.blog.163.com/blog/static/6872130420095242016546/

firewalld 端口流量转发

需求说明 将本机 (IP: 192.168.174.100) 发往 192.168.174.165:443 的流量转发到 另一节点 192.168.174.149:20037(nginx 4层代理到192.168.174.165:443) 启用 IP 转发 # 节点IP: 192.168.174.100 sysctl -w net.ipv…

[PaperReading] Qwen2-VL: Enhancing Vision-Language Model’s Perception of the World at Any Resolution

目录Qwen2-VL: Enhancing Vision-Language Model’s Perception of the World at Any ResolutionTL;DRMethodNaive Dynamic ResolutionMultimodal Rotary Position Embedding (M-RoPE)Unified Image and Video Underst…

谈谈对软件工程的理解

谈谈对软件工程的理解软件工程的核心思想在于软件不仅仅是程序,软件工程是一门强调“实践”和“工程化”的学科。软件,即程序、数据和文档**三者的集合体。这彻底改变了我过去认为“写软件就是敲代码”的狭隘观念。文…

[PaperReading] MemGPT: Towards LLMs as Operating Systems

目录MemGPT: Towards LLMs as Operating SystemsTL;DRMethodMain contextExperiment总结与思考相关链接 MemGPT: Towards LLMs as Operating Systems link 时间:23.10 单位:UC Berkeley 相关领域:Agent 作者相关工作…

株洲定制网站建设做网站最贵

使用Python Django框架做一个音乐网站&#xff0c; 本篇音乐播放器-添加播放音乐功能实现。 目录 创建播放器数据表 设置表结构 执行创建表 命令 执行 数据表结构 添加单个歌曲 创建路由 加入播放器视图 模板处理 基类方法 子页面调用 优化弹窗 加入layui文件 基…

总线的性能指标

1.总线的传输周期(总线周期 一次总线操作所需的时间(包括申请阶段,寻址阶段,传输阶段和结束阶段 通常有若干个总线时钟周期构成 2.总线时钟周期 早期由cpu发出,而如今都是由桥接器提供的 即机器的时钟信号,计算机…

网站主页设计收费个人买卖网站怎么做

这里的状态定义一般使用DP【i】 表示 考虑前i个东西能否满足条件&#xff0c;然后我们枚举上一次的转移位置就好了 2369. 检查数组是否存在有效划分 需要注意的是我习惯从1开始写&#xff0c;所以要处理好边界的下标问题 class Solution { public:bool validPartition(vector&l…

网站建设类型的好处延安网站设计公司

闲来无事学一下设计模式&#xff0c;希望这23种可以一直更下去&#xff0c;什么时候能更完呢&#xff0c;也许一个月&#xff0c;也许一年&#xff0c;也许断更 设计模式六大原则 本文是23篇的第一篇&#xff0c;在学习设计模式之前&#xff0c;你需要了解下六大原则。 1、开…

网站开发平台有哪些国内很多网站不是响应式

作者&#xff1a;刘肉酱摩尔定律的终结将使服务于特定领域的架构成为计算的未来。一个开创性的例子就是谷歌在 2015 年推出的张量处理单元&#xff08;TPU&#xff09;&#xff0c;目前已经在为超过十亿人提供服务。TPU 使深度神经网络&#xff08;DNN&#xff09;的计算速度提…