当前位置: 代码网 > it编程>数据库>Mysql > 使用Dify访问mysql数据库详细代码示例

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

2025年03月16日 Mysql 我要评论
1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom flask import flask, request, jsonifyimport mysql.con

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数据库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com