简介
Human Language to SQL Translator 是一个可以通过ChatGPT 可以生成 SQL 语句的网站。
开源地址: https://github.com/whoiskatrin/sql-translator
这里使用 python
对其进行了复现
代码
"""自然语言生成 SQL """
import openai
def sql_generation(query, table_schema):
"""
生成 sql
:param query: 用户输入的 query
:param table_schema: 数据库表的 schema
:return: sql 语句
"""
prompt = """
Translate this natural language query into SQL without changing the case of the entries given by me:
""" + query + """
Use this table schema:
""" + table_schema + """
SQL Query:"""
completion = openai.ChatCompletion.create(model="gpt-3.5-turbo",
# api_base="https://xxxxx.xxxxx/v1", 如果有域名代理可以使用
api_key="sk-xxxxxxxxxxxxxxxxxxx",
messages=[
{
"role": "system", "content": prompt},
], max_tokens=500, temperature=0)
return completion.choices[0].message.content
if __name__ == '__main__':
query = "查询年龄大于23岁的男生"
print("query: " + query)
sql = sql_generation("查询年龄大于23岁的男生",
"CREATE TABLE USER(id int, age int, sex bool, name varchar, update_time date, create_time date)")
print("SQL: " + sql)
运行结果
总结
主要是通过 提示语让 ChatGPT 明白自己需要参考表结构将用户输入的文字转换为 SQL 语句
可以通过修改 PROMPT
来实现生成不同的数据库语句