这一节内容,来聊下通过调用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
共同學習,寫下你的評論
評論加載中...
作者其他優質文章







