微信扫码
添加专属顾问
我要投稿
轻松实现自然语言到数据库查询的解决方案,探索DeepSeek和Dify如何协同工作。核心内容: 1. Dify不支持直连数据库的问题概述 2. DeepSeek辅助准备数据库表结构和数据插入 3. 通过自然语言实现数据库查询的流程和代码示例
# 创建班级表
CREATE TABLE classes (
class_id INT AUTO_INCREMENT PRIMARY KEY,
class_name VARCHAR(50) NOT NULL
);
# 创建用户表
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
class_id INT,
FOREIGN KEY (class_id) REFERENCES classes(class_id)
);
# 插入班级数据
INSERT INTO classes (class_name) VALUES
('Class A'),
('Class B'),
('Class C'),
('Class D');
# 插入用户数据
INSERT INTO users (username, email, class_id) VALUES
('Alice', 'alice@example.com', 1),
('Bob', 'bob@example.com', 2),
('Charlie', 'charlie@example.com', 3),
('David', 'david@example.com', 4),
('Eve', 'eve@example.com', 1),
('Frank', 'frank@example.com', 2),
('Grace', 'grace@example.com', 3),
('Hank', 'hank@example.com', 4),
('Ivy', 'ivy@example.com', 1),
('Jack', 'jack@example.com', 2);
from flask import Flask, request, jsonify
import pymysql
import re
# 创建 Flask 应用
app = Flask(__name__)
# 数据库连接配置
DB_CONFIG = {
'host': 'localhost',
'user': 'test', # 替换为你的数据库用户名
'password': '123456', # 替换为你的数据库密码
'database': 'test', # 替换为你的数据库名称
'cursorclass': pymysql.cursors.DictCursor
}
# 定义接口:执行 SQL 查询
@app.route('/query', methods=['POST'])
def execute_query():
# 获取客户端传递的 SQL 语句
data = request.json
if not data or 'sql' not in data:
return jsonify({'error': 'Missing SQL statement in request body'}), 400
sql = data['sql']
# 简单的 SQL 语句验证(防止恶意操作)
if not re.match(r'^SELECT\s', sql, re.IGNORECASE):
return jsonify({'error': 'Only SELECT queries are allowed'}), 400
try: # 连接数据库
connection = pymysql.connect(**DB_CONFIG)
with connection.cursor() as cursor:
# 执行 SQL 查询
cursor.execute(sql)
result = cursor.fetchall()
return jsonify(result)
except pymysql.MySQLError as e:
return jsonify({'error': str(e)}), 500
finally:
if connection:
connection.close()
# 启动服务
if __name__ == '__main__':
app.run(debug=True)
python .\server.py
你是一个数据分析师,根据用户输入的{content}
需求以及检索到{上下文}
,生成对应的查询SQL,SQL必须经过严格的校验。
## 你可以使用的其他方法
用户输入类似于“求和”或“总和”时,则在sql语句中使用SUM()。
用户输入类似于“平均数”或“平均”时,在在sql语句中使用AVG()。
## 要求
1.如果用户输入的内容无法生成为sql语句,请直接说“抱歉,该命令无法形成数据库查询操作”。
2.当可以生成sql语句时,请确保输出的内容为完整正确的sql语句,不要输出此外的其他任何字符,确保你生成的内容用户可以直接执行查询操作。
3.对于字符串内容的查询请使用LIKE操作而不是等于操作。
4.请不要在回复中包括除sql语句之外的任何内容。
5.禁止中间过程输出。
6.输出的sql为一整行。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-11
Chat2DB 3.0 发布:SQL 界的 “Cursor”到底有多炸?
2025-03-10
AI Agent会颠覆企业应用软件么?
2025-03-10
数据分析 Agent 在零售和金融领域的解决方案与落地应用
2025-03-10
AutoDev Bridge:构建 Agent 自动分析老旧系统,设计迁移路径与方案实施
2025-03-10
效率、机会、挑战,接下来企业在AI时代怎么发展?
2025-03-09
大模型+数据分析:下一代智能查询优化体系的先行探索
2025-03-06
用低代码平台集成人工智能:无需专业开发也能实现智能化
2025-03-05
通过问答生成SQL:大模型时代BI的最佳解决方案
2024-06-20
2024-10-14
2025-02-04
2024-10-09
2024-06-14
2024-06-16
2024-06-14
2024-05-31
2024-07-24
2024-07-03
2025-03-11
2025-03-10
2025-03-10
2025-02-28
2025-02-25
2025-02-22
2025-02-22
2025-01-30