用Dify可快速搭建自然语言查数据库的Agent:需正确配置MySQL/PostgreSQL连接与提示词,创建“SQL查询助手”自定义工具并填OpenAPI 3.0 JSON(含required的database_type和string型query),用Flask+SQLAlchemy实现后端(关键加pool_pre_ping=True),部署后在Dify绑定工具、填API地址并完善系统提示词。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

用Dify快速搭建一个能连接MySQL或PostgreSQL并执行自然语言查询的Agent,无需写后端代码,但必须正确配置数据库连接与提示词结构,否则查询会返回空结果或报连接超时。
创建自定义工具:封装SQL查询能力
进入Dify工作台→知识库→工具→新建工具→选择“自定义工具”。
填写基础信息:工具名称填“SQL查询助手”,描述写“根据用户问题生成并执行SQL,返回结构化结果”,分类选“数据查询”。
在“API Schema”栏粘贴OpenAPI 3.0格式的JSON定义,必须包含database_type、query两个必需参数,且query类型为string——若漏掉required字段或把query设为object,后续调用时会直接报400错误。
这一步操作起来很简单,直接把文件拖进去就行。
编写后端服务:接收请求并执行SQL
用Python Flask写一个轻量接口,部署在可公网访问的服务器或本地内网(需Dify能直连)。
方法一:使用 SQLAlchemy + pymysql/psycopg2
安装依赖:pip install flask sqlalchemy pymysql psycopg2-binary。创建app.py,初始化引擎时必须用create_engine("mysql+pymysql://user:pass@host:port/db", pool_pre_ping=True),【pool_pre_ping=True是关键,否则长连接断开后首次查询必失败】。
方法二:硬编码查询逻辑(适合单库调试)
收到POST请求后,从JSON body提取database_type和query,用if database_type == "mysql"分支调用对应连接器;注意对query做基础校验——禁止包含drop、delete、update等关键词,否则可能被恶意利用清空表。
配置Dify Agent:绑定工具与设置提示词
第一步:在应用编辑页→模型配置→启用“函数调用(Function Calling)”。
第二步:进入“工具”标签页→勾选刚创建的“SQL查询助手”工具→点击“配置参数”。
第三步:在“API Base URL”中填入你部署的Flask服务地址,例如https://your-domain.com/sql-query;如果服务跑在本地,填http://192.168.1.100:5000/sql-query,【Dify不会自动代理本地地址,必须确保网络互通】。
第四步:切换到“提示词”标签页,在系统提示词末尾追加:“你是一个数据库查询专家。用户提问后,先判断是否需要查数据库;需要时调用SQL查询助手工具,传入准确的SQL语句;严禁伪造结果,工具返回空则如实告知。”


















