从零搭建国产化AI SQL助手|openEuler+MySQL8.0+TokenHub大模型实现NL2SQL与自动调优
业务人员不会写SQL,每次统计订单、分析营收都要找开发;DBA每天重复解析慢SQL、手动建索引,大量时间消耗在重复工作上。
本文完整分享InnoAI SQL助手实战项目:基于国产化openEuler服务器,结合MySQL 8.0、腾讯TokenHub大模型,实现自然语言生成只读SQL、自动查询、AI业务解读、EXPLAIN智能调优,同时提供命令行+Streamlit网页双端,全程可落地、含完整部署代码与界面演示
项目亮点
1. 纯国产化Linux环境部署,适配企业服务器标准;
2. 双层安全防护:仅放行SELECT、密钥文件600权限隔离;
3. 一套业务代码复用终端+Web,无重复开发;
4. 自动识别全表扫描/文件排序,输出可直接执行索引语句;
5. systemd托管网页服务,开机自启、崩溃自动重启。
分类 组件
操作系统 openEuler 2203 SP4
数据库 MySQL 8.0.45(二进制部署)
Python 3.11.9 源码独立编译
大模型网关 腾讯云TokenHub(DeepSeek V4 Pro / Qwen3.5-Plus)
Python依赖 pymysql、python-dotenv、langchain-openai、Streamlit、tabulate
交互入口 终端CLI + Streamlit可视化Web
一、整体四层技术架构

1. 接入交互层(双使用入口)
- 命令行终端: python3 main.py 交互式菜单,适合运维调试、批量测试;
- Streamlit网页:浏览器可视化面板,业务人员直接使用,自带输入校验、表格渲染、代码复制。
2. Python核心分层(解耦设计,5个核心文件)
1. main.py :总调度层,封装NL2SQL、SQL调优公共逻辑,CLI/Web共用底层函数;
2. web_main.py :Web界面层,只做UI渲染,不重复业务代码;
3. prompts.py :提示词工程层,统一管理SQL生成/调优Prompt,内置SQL清洗提取工具;
4. mysql_client.py :数据访问层,封装数据库连接、SQL危险语句拦截、EXPLAIN获取;
5. .env :独立配置文件,存放数据库账号、LLM密钥,敏感信息与代码分离。

3. 底层数据持久层
openEuler虚拟机部署MySQL 8.0.45,单业务库 testdb ,唯一业务表 order_info 电商订单表,预置20条标准测试订单数据,作为项目唯一数据源。
4. AI大模型服务层
依托腾讯云TokenHub聚合网关,一套API兼容DeepSeek、通义千问等多款模型,统一鉴权计费,无需对接多家厂商SDK。
二、环境完整部署教程
2.1 openEuler系统初始化
关闭防火墙与SELinux、配置阿里NTP时间同步、安装编译依赖


2.2 Python3.11.9 源码编译安装
1. 上传源码包至 /usr/local/src ,编译独立环境,不覆盖系统Python

2. 配置国内pip镜像并安装项目依赖


2.3 MySQL 8.0.45 二进制部署
1. 创建mysql系统用户、初始化数据库、配置systemd自启服务;
2. 新建业务库 testdb 与订单表 order_info ,插入20条测试数据:

(我这里是因为创过了所以显示存在,正常情况是提示,ok)
2.4 腾讯TokenHub大模型密钥申请

1. 腾讯云完成实名认证,进入TokenHub平台新建API Key;
2. 推荐无长思考链模型: deepseek-v4-pro / qwen3.5-plus ;
3. 新建项目配置文件 .env ,设置600权限防止密钥泄露!

三、项目核心代码分层讲解
项目目录结构
/opt/mysql_ai_tools
├── .env # 密钥配置(600权限)
├── main.py # 核心调度、终端入口
├── mysql_client.py # 数据库封装+SQL安全拦截
├── prompts.py # 提示词统一管理
└── web_main.py # Streamlit网页界面

3.1 mysql_client.py 安全数据库层
核心能力:危险SQL拦截,正则匹配 INSERT/UPDATE/DELETE/DROP/ALTER 等语句直接抛出异常,仅允许SELECT;封装 execute_query 普通查询、 get_explain_plan 执行计划获取,自动管理数据库连接释放。

3.2 prompts.py 提示词工程
统一维护 order_info 表结构,两套Prompt模板:
1. NL2SQL模板:约束模型仅输出 sql 代码块,禁止编造字段、只生成只读查询;
2. SQL调优模板:传入EXPLAIN数据,要求输出性能缺陷、建索引语句、优化SQL;
内置 extract_sql 静态方法,三层正则清洗大模型冗余文本,提取纯净可执行SQL。

3.3 main.py 业务总调度
两大核心对外函数(终端/网页复用)
1. nl2sql_query(user_input) :自然语言→生成SQL→数据库执行→AI生成业务总结;
2. sql_tune_analyze(raw_sql) :接收慢SQL→获取执行计划→AI输出索引优化方案;
内置 clean_sql_spacing 工具,自动修复中文标点、全角空格、关键字粘连导致的SQL语法报错。

3.4 web_main.py Streamlit可视化页面
无需前端JS/CSS,纯Python搭建页面,侧边栏双功能切换:
- 🔍 数据查询与总结:输入中文需求,一键生成SQL+表格+业务解读;
- ⚙️ SQL性能调优:粘贴SELECT语句,自动展示EXPLAIN表格与优化建议;
增加全局CSS美化、代码复制修复、空输入/非法输入拦截校验。
项目执行



四、Web后台systemd常驻部署
编写服务单元 /etc/systemd/system/mysql-ai-web.service ,实现开机自启、进程异常自动重启
生效启动命令
最后得到的IP在浏览器可以打开简易服务及完成,可以方便非sql人员使用。

项目安全与稳定性设计
1. SQL操作隔离:黑名单拦截所有写/删/改语句,杜绝AI幻觉篡改数据库;
2. 密钥安全管控: .env 文件权限600,代码无硬编码、日志不打印账号密钥明文;
3. 全量异常捕获:数据库连接失败、大模型API超时、SQL语法错误均友好提示,程序不崩溃;
4. SQL自动清洗:统一中英文标点、清除特殊空白字符,解决大模型输出语法报错;
5. 进程高可用:Web服务systemd托管,服务器开机自动启动、进程宕机3秒重启。
项目不足与后续扩展方向
1. 当前仅支持单表查询,后续增加多表JOIN关联能力;
2. 新增用户登录权限体系,区分业务只读账号、管理员调优账号;
3. 增加查询结果Excel导出、历史查询记录持久化;
4. 支持本地私有化开源大模型,脱离公有云TokenHub;
5. 定时慢SQL巡检、自动推送优化报告。
总结
本项目完整覆盖国产化服务器环境搭建、Python分层工程开发、大模型NL2SQL落地、Web可视化部署全流程,把AI大模型与MySQL运维深度结合,解决业务人员查数难、DBA优化重复劳动两大痛点。
整套工具轻量化、易部署,适配中小企业数据查询、SQL性能优化一体化落地,可作为Linux运维、Python后端、大模型应用综合实战学习项目。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)