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

23行代码实现SQL优化平台

621

我们创建了一个全新的知识星球:

分析使用AI工具能做MySQL的哪些事情,个人或者企业怎么基于ChatGPT的API开发应用。以及围绕AI工具有哪些副业或者创业的思路。文末有28元的新人立减券

开始进入内容。

这一节内容,我们来写一个SQL优化平台,跟以往的SQL优化平台不同的是,我们通过gradio实现页面,调用OpenAI的API来分析SQL并返回优化后的SQL语句。实现这些功能只用了20多行Python代码。

下面就是实现步骤。

1 环境准备

安装Python 3.10环境。

安装gradio和openai的依赖:

    pip install gradio openai

    进入下方链接获取自己的openai的api key,没有用户就先创建。

    https://platform.openai.com/account/api-keys


    如果没有api key 也先创建,目前是送5美元的额度。

    后续使用过程要查自己的API免费额度,可以访问:

    https://platform.openai.com/account/usage


    再把自己的api key写入环境变量,比如linux下:

      export OPENAI_API_KEY="api key"


      2 编写代码

      代码是ChatGPT帮忙写的,我只稍作了修改,提交的是:

      借助gradio实现一个页面,有两个输入框,一个框输入表结构,另一个框输入SQL语句,调用openai来分析语句,一个输出框输出优化结果,不要连MySQL,一个文件实现

      代码如下:

        import gradio as gr
        import openai
        import os


        openai.api_key = os.environ.get("OPENAI_API_KEY")


        def optimize_sql(table_structure, sql_query):
        response = openai.Completion.create(
        engine="text-davinci-002",
        prompt=f"Optimize the following SQL query for table structure {table_structure}:\n\n{sql_query}\n\nOptimized query:",
        max_tokens=2048,
        n=1,
        stop=None,
        temperature=0.5,
        )


        return response.choices[0].text.strip()


        inputs = [
        gr.inputs.Textbox(label="Table Structure"),
        gr.inputs.Textbox(label="SQL Query")
        ]


        output = gr.outputs.Textbox(label="Optimized SQL Query")


        title = "SQL Query Optimizer"
        description = "Enter a table structure and SQL query to optimize using OpenAI's GPT-3."


        examples = [["CREATE TABLE Users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER);", "SELECT * FROM Users WHERE age > 18;"]]


        gr.Interface(fn=optimize_sql, inputs=inputs, outputs=output, title=title, description=description, examples=examples).launch()



        3 测试

        运行上面的程序,可以访问http://IP:7860/,界面如下:

        输入表结构

          CREATE TABLE student_scores (
          id int auto_increment PRIMARY KEY,
          name VARCHAR(50) NOT NULL,
          score INTEGER NOT NULL,
          key idx_name(name)
          );

          输入要优化的SQL,这里的值故意没加引号。制造隐式转换的SQL:

            select * from student_scores where name=123;


            我们看下优化效果:

            可以看到,优化的SQL语句,加上了单引号。也是我们想要的优化结果。


            有了这个例子,其他相关的程序也很方便写出来,比如取名系统,提交给ChatGPT的内容比如是:

            借助gradio实现一个页面,有两个输入框,一个框输入姓,另一个框输入性别,调用openai来取名,一个输出框输出名字,一个文件实现

            当然还有其他很多系统,都能通过类似方式做出来,基本几分钟完事。


            如果对这些事情感兴趣,可以加入我们的知识星球:ChatGPT与AI联盟

            星球请到的合伙人和嘉宾,基本是公司ALL IN AI的。

            星球包括分析使用AI工具能做MySQL的哪些事情,比如我们创建了专栏《ChatGPT和MySQL结合》,专栏还在持续更新中。

            当然星球还包括其他AI内容,比如AI画图、个人或者企业怎么基于ChatGPT的API开发应用。以及围绕AI工具有哪些副业或者创业的思路。

            再送一张28元的优惠券,券后40元年费(相当于每天0.1096元),限量20张,先到先得。

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

            评论