暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

借助DeepSeek API实现SQL优化平台

617
这一节内容,来聊下通过调用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(11NOT NULL AUTO_INCREMENT,
                  `a` varchar(20DEFAULT NULL,
                  `b` int(20DEFAULT 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格式化平台,都不在话下。大家也可以尝试一下。

                  更多有趣的玩法,欢迎大家在留言区交流。

                  最后,再介绍一下小编最近在马六学平台上线的新专栏《借助DeepSeek打造私有化智能助手》,早鸟价:9.9。
                  地址:

                  https://www.maliustudy.com/detail/column/307


                  内容介绍

                  第 01 节:当官方DeepSeek不能用时,有哪些平替方案

                  第 02 节:私有化部署DeepSeek

                  第 03 节:DeepSeek API使用

                  第 04 节:借助DeepSeek API实现SQL优化平台

                  第 05 节:配置DeepSeek知识库

                  第 06 节:让DeepSeek成为你的编程助手

                  第 07 节:通过DeepSeek实现一个智能客服

                  文章转载自MySQL数据库联盟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论