使用Dify访问mysql数据库详细代码示例

 更新时间:2025年03月15日 11:49:55   作者:wxl781227  
这篇文章主要介绍了使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访问工作流和智能体,需要的朋友可以参考下

1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。

#sql_tools.py

from flask import Flask, request, jsonify
import mysql.connector

# 数据库连接配置
config = {
    'user': 'your_username',
    'password': 'your_password',
    'host': 'localhost',
    'database': 'your_database',
    'raise_on_warnings': True
}

# 初始化Flask应用
app = Flask(__name__)

# 连接数据库
def connect_to_database():
    try:
        conn = mysql.connector.connect(**config)
        print("Connected to MySQL database")
        return conn
    except mysql.connector.Error as err:
        print(f"Error: {err}")
        return None

# 执行SQL查询
def execute_query(conn, sql):
    cursor = conn.cursor()
    try:
        cursor.execute(sql)
        if sql.strip().lower().startswith("select"):
            # 如果是查询操作,返回结果
            result = cursor.fetchall()
            return result
        else:
            # 如果是插入、更新、删除操作,提交事务并返回受影响的行数
            conn.commit()
            return cursor.rowcount
    except mysql.connector.Error as err:
        print(f"Error executing SQL: {err}")
        return None
    finally:
        cursor.close()

# HTTP接口:执行SQL
@app.route('/execute', methods=['POST'])
def execute_sql():
    # 获取请求中的SQL语句
    data = request.json
    if not data or 'sql' not in data:
        return jsonify({"error": "SQL statement is required"}), 400

    sql = data['sql']
    conn = connect_to_database()
    if not conn:
        return jsonify({"error": "Failed to connect to database"}), 500

    # 执行SQL
    result = execute_query(conn, sql)
    conn.close()

    if result is None:
        return jsonify({"error": "Failed to execute SQL"}), 500

    # 返回结果
    return jsonify({"result": result})

# 启动Flask应用
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=3000)

2、创建知识库,导入表结构描述。

3、创建数据库访问工作流。

代码执行:

import requests
def main(sql: str) -> dict:
    # 定义API的URL
    url = "https://xxx.ngrok-free.app/execute"

    # 构造请求体
    payload = {
        "sql": sql
    }

    # 发送POST请求
    try:
        response = requests.post(url, json=payload)
    
        # 检查响应状态码
        if response.status_code == 200:
            # 解析响应数据
            result = response.json()
            return {
                "result": f"{result}"
            }
        else:
            return {
                "result": f"请求失败,状态码:{response.status_code},{response.json()}"
            }
    except requests.exceptions.RequestException as e:
        return {
            "result": f"请求异常:{e}"
        }

4、创建数据库智能体

总结

到此这篇关于使用Dify访问mysql数据库的文章就介绍到这了,更多相关Dify访问mysql数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL DELETE语法使用详细解析

    MySQL DELETE语法使用详细解析

    此文章主要讲述的是MySQL DELETE语法的详细解析,以及一些在实际操作中值得我们大家注意的相关事项的描述,以下就是正文的主要内容
    2013-03-03
  • MySQL与Oracle的语法区别详细对比

    MySQL与Oracle的语法区别详细对比

    Oracle和mysql的一些简单命令对比在本文中将会涉及到很多的实例,感兴趣的你不妨学习一下,就当巩固自己的知识了
    2013-03-03
  • mysql 5.7.14 安装配置代码分享

    mysql 5.7.14 安装配置代码分享

    这篇文章主要为大家分享了CentOS 6.6下mysql 5.7.13winx64安装配置方法图文教程,感兴趣的朋友可以参考一下
    2016-09-09
  • MySQL系列关于NUll值的经验总结分析教程

    MySQL系列关于NUll值的经验总结分析教程

    这篇文章主要为大家介绍了MySQL系列关于NUll值的一些经验总结分析,关于null值的影响作用以及为什么会出现null值的原因等等问题的解析
    2021-10-10
  • MySQL中count(*)、count(1)和count(col)的区别汇总

    MySQL中count(*)、count(1)和count(col)的区别汇总

    count()函数是用来统计表中记录的一个函数,返回匹配条件的行数,下面这篇文章主要给大家总结介绍了关于MySQL中count(*)、count(1)和count(col)的区别,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2018-03-03
  • window环境下使用VScode连接虚拟机MySQL方法

    window环境下使用VScode连接虚拟机MySQL方法

    这篇文章主要介绍了window环境下使用VScode连接虚拟机MySQL方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • MySQL数据库事务隔离级别详解

    MySQL数据库事务隔离级别详解

    这篇文章主要介绍了MySQL数据库事务隔离级别详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • Mysql InnoDB和MyISAM区别原理解析

    Mysql InnoDB和MyISAM区别原理解析

    这篇文章主要介绍了Mysql InnoDB和MyISAM区别原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • MySQL设置用户权限的简单步骤

    MySQL设置用户权限的简单步骤

    这篇文章主要给大家介绍了关于MySQL设置用户权限的简单步骤,学习MySQL数据库,MySQL用户权限设置是需要首先学习的,需要的朋友可以参考下
    2023-07-07
  • Mysql 5.7.19 winx64 ZIP Archive 安装及使用过程问题小结

    Mysql 5.7.19 winx64 ZIP Archive 安装及使用过程问题小结

    本篇文章给大家介绍了mysql 5.7.19 winx64 ZIP Archive 安装及使用过程问题小结,需要的朋友可以参考下
    2017-07-07

最新评论