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.添加知识库和工具

相关推荐
小陈工35 分钟前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
科技小花5 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸5 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain5 小时前
linux个人心得22 (mysql)
数据库·mysql
功德+n6 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
阿里小阿希6 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神6 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员6 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java6 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
小敬爱吃饭6 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘