这一节内容,来聊下通过调用DeepSeek 的API,来实现一个SQL优化平台。
效果图如下:
1 申请硅基流动的API
目前,DeepSeek官方的API,因为资源紧张,暂时不送额度,也不能充值了。我们就可以使用硅基流动的API key来使用DeepSeek模型。
当然,后续如果官方API key开放充值了,也可以参考这篇文章的方法。
进入到硅基流动的API密钥管理页面:https://cloud.siliconflow.cn/account/ak
点击新建API密钥。就可以在页面查看到API密钥。
2 在代码中测试DeepSeek API
把硅基流动的API key 设置为环境变量。
Windows环境:
setx SILICONFLOW_API_KEY xxx
Linux环境:
export SILICONFLOW_API_KEY xxx
硅基流动的API支持用openai库进行调用,所以我们可以先安装OpenAI的Python库:
pip install --upgrade openai
在PyCharm中编写测试API key的代码:
from openai import OpenAI import os api_key = os.getenv('SILICONFLOW_API_KEY') client = OpenAI(api_key=api_key, base_url="https://api.siliconflow.cn/v1") response = client.chat.completions.create( model='deepseek-ai/DeepSeek-V3', messages=[ {'role': 'user', 'content': "2025年,对创业者来说,有哪些机遇?"} ], stream=True ) for chunk in response: print(chunk.choices[0].delta.content, end='')
如下图,如果能正确返回结果,说明API key没问题。
3 通过DeepSeek生成SQL优化平台代码
进入到DeepSeek的官网:https://chat.deepseek.com/
发送如下提示词(记得勾选“深度思考”):
借助gradio实现一个页面,
有两个输入框
一个框输入表结构,另一个框输入SQL语句
然后替换以下代码中的content
一个输出框输出优化结果
from openai import OpenAI import os api_key = os.getenv('SILICONFLOW_API_KEY') client = OpenAI(api_key=api_key, base_url="https://api.siliconflow.cn/v1") response = client.chat.completions.create( model='deepseek-ai/DeepSeek-V3', messages=[ {'role': 'user', 'content': "2025年,对创业者来说,有哪些机遇?"} ], stream=True ) for chunk in response: print(chunk.choices[0].delta.content, end='')
小编的会话截图如下:
生成的代码是:
from openai import OpenAI import os import gradio as gr def optimize_sql(schema, sql): # 组合提示词 prompt = f"""请优化以下SQL语句: 【表结构】 {schema} 【原始SQL】 {sql} 【优化建议】 """ # 创建OpenAI客户端 client = OpenAI( api_key=os.getenv('SILICONFLOW_API_KEY'), base_url="https://api.siliconflow.cn/v1" ) # 流式请求 response = client.chat.completions.create( model='deepseek-ai/DeepSeek-V3', messages=[{'role': 'user', 'content': prompt}], stream=True ) # 逐步收集并返回结果 full_response = "" for chunk in response: content = chunk.choices[0].delta.content or "" full_response += content yield full_response with gr.Blocks(title="SQL优化助手") as demo: gr.Markdown("## SQL优化助手") gr.Markdown("请输入表结构和需要优化的SQL语句") with gr.Row(): with gr.Column(): schema_input = gr.Textbox( label="表结构", placeholder="请输入表结构(例如:users(id INT, name VARCHAR(50), age INT))", lines=7 ) sql_input = gr.Textbox( label="SQL语句", placeholder="请输入需要优化的SQL语句", lines=7 ) output = gr.Textbox( label="优化结果", interactive=False, lines=12 ) gr.Examples( examples=[ [ "employees(id INT, name VARCHAR(100), department_id INT, salary DECIMAL(10,2))", "SELECT * FROM employees WHERE salary > 5000" ], [ "orders(order_id INT, customer_id INT, order_date DATE, total_amount DECIMAL)", "SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id HAVING total_amount > 1000" ] ], inputs=[schema_input, sql_input] ) submit_btn = gr.Button("开始优化", variant="primary") submit_btn.click( fn=optimize_sql, inputs=[schema_input, sql_input], outputs=output ) if __name__ == "__main__": demo.queue().launch()
4 运行代码
运行之后,会创建一个web服务。
在网页直接访问:http://127.0.0.1:7860/
界面如下:
5 测试SQL优化效果
我们来测试SQL优化。
表结构:
CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` varchar(20) DEFAULT NULL, `b` int(20) DEFAULT NULL, `c` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_a` (`a`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
故意构造一条隐式转换的SQL,看DeepSeek是否能优化。
select * from t1 where a=1000;
能发现存在的问题,以及给出合理的优化建议。
当然,SQL优化平台只是举个例子,比如其他一些类似的平台,包括SQL生成器,Json格式化平台,都不在话下。大家也可以尝试一下。
另外,大家如果想系统学习DBA,可以看下我制作的DBA体系课。
课程亮点如下:
从基础到提升,包括DBA需要掌握的绝大多数内容;
10多个企业级DBA项目;
通过Go开发一套DB平台;
3种主流高可用方案精讲;
数据库上云后DBA的具体工作;
AI协助DBA高效管理数据库;
答疑服务。
课程链接:https://class.imooc.com/sale/dba
共同学习,写下你的评论
评论加载中...
作者其他优质文章