docker+ollama+flask+mysql实现本地数据库读取操作

1.安装mysql

安装mysql后,使用自带的数据库表

2. 使用flask,创建查询接口

文件目录

config.py,配置数据库相关信息

python 复制代码
MYSQL_HOST = "127.0.0.1"
MYSQL_PORT = 3306
MYSQL_USER = "root"
MYSQL_PASSWD = "123456"
MYSQL_DB = "world"

mysql_operate.py:创建mysql操作类

python 复制代码
import pymysql
from config.config import MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWD, MYSQL_DB

class MysqlDb():
    def __init__(self, host, port, user, password, db):
        self.conn = pymysql.connect(host=host,
                                    port=port,
                                    user=user,
                                    passwd=password,
                                    db=db)
        self.cursor = self.conn.cursor()

    def select_db(self, sql):
        self.conn.ping(reconnect=True)
        self.cursor.execute(sql)
        data = self.cursor.fetchall()
        return data

    def __del__(self):
        self.cursor.close()
        self.conn.close()

    def execute_db(self, sql):
        try:
            self.conn.ping(reconnect=True)
            self.cursor.execute(sql)
            self.conn.commit()
            return "插入成功"
        except Exception as e:
            self.conn.rollback()
            return "error"

db = MysqlDb(MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWD, MYSQL_DB)

app.py

python 复制代码
from flask import Flask
from flask import jsonify
from flask import request
from common import mysql_operate

app = Flask(__name__)

@app.route('/')
def index():
    return 'hello mysql'


@app.route('/query')
def query():  # put application's code here
    # sql = "SELECT * FROM city"
    data = request.get_json()
    if not data or 'sql' not in data:
        return jsonify({"error": "sql语句是必须的"})
    sql = data['sql']
    data = mysql_operate.db.select_db(sql)
    return jsonify(data)


if __name__ == '__main__':
    app.run()

3. 在dify中创建sql工作流

1.创建空白工作流

2.在开始模块中创建sql变量

3.创建http请求并修改相关参数

修改请求方式未post

修改请求地址,注意 127.0.0.1需要更改为host.docker.internal

求改headers

修改json数据
3.进行模板转换

4.添加结束节点

选择上一步模板转换中的输出output,如果没有3,则直接选择http body也可以

4.发布为工具

4.创建agent

1.创建agent

2.输入提示词

bash 复制代码
## 角色
你是一个专业的数据分析专家,并且精通根据用户的问题,数据表接口进行生成sql语句进行查询数据库
## 背景
根据用户问题,精确确定用户需求,首先查看数据表中的数据表结构,然后编写准确的并且可以直接执行的sql语句进行统计和查询数据库中的数据,并且返回相关数据,对于用户的工作效率提升十分重要
## 任务
根据用户的相关问题,首先查询知识库查看大概的数据表结构,然后编写可执行的mysql语句并且调用'查询数据库'工具进行查询数据库,用于最后满足用户的需求。对于用户需要查询数据库的需求务必调用'查询数据库'工具。
## mysql语法提示
如果需要子查询的话需要用如下语法
select * from table where name="beijing"
## 首先进行下面的逻辑推理过程
1.查询知识库了解数据库表结构
2.梳理和理解用户需求
3.分析这个需求需要编写多少sql语句
4.分析如何编写sql语句使得以最少的sql查询次数进行查询数据库
5.尝试编写仅仅一条或者5条内sql进行查询数据库
6.判断sql语句是否符合mysql语句的语法
## 提示
调用查询数据库工具时,直接输入组装好的sql语句即可,不用输入字典

3.添加知识库和工具

相关推荐
小王子102421 分钟前
Django模型关系:从一对多到多对多全解析
数据库·mysql·django·orm
南玖yy2 小时前
C++多态:面向对象编程的灵魂之
运维·开发语言·数据库·c++·后端·c·c语音
●VON2 小时前
重生之我在暑假学习微服务第四天《Docker-下篇》
java·学习·docker·微服务·容器
极限实验室2 小时前
INFINI Labs 产品更新 - Coco AI v0.7.0 发布 - 全新的文件搜索体验与全屏化的集成功能
数据库·搜索引擎·产品
染落林间色3 小时前
达梦数据库(DM Database)角色管理详解|了解DM预定义的各种角色,掌握角色创建、角色的分配和回收
数据库·sql·mysql
老纪的技术唠嗑局3 小时前
走出三大困境,深耕五大场景 | 好未来AI业务探索OceanBase实现降本86%
运维·数据库·架构
时序数据说3 小时前
分布式时序数据库的特点解析
大数据·数据库·分布式·物联网·时序数据库·iotdb
Jantor3 小时前
PostgreSQL 分区最佳实践
数据库·postgresql
77qqqiqi3 小时前
Docker
java·docker·微服务