功能概述
这个功能允许用户使用自然语言描述查询需求,由GPT自动转换为SQL语句并执行查询,无需手动编写SQL代码。系统支持多种主流数据库,包括MySQL、PostgreSQL、SQL Server等。
详细功能说明
1. 自然语言转SQL
- 用户可以用日常语言描述查询需求
- GPT会分析语义,自动生成相应的SQL查询语句
- 支持复杂的查询条件,包括多表关联、聚合函数、子查询等
2. 数据库连接管理
- 支持配置多个数据库连接
- 可保存常用连接配置
3. 查询执行与结果展示
- 自动执行生成的SQL语句
- 以表格形式展示查询结果
4. 查询历史记录
- 自动保存查询历史
- 可按时间、数据库、关键字等条件检索历史查询
使用步骤
- 选择数据库连接 - 从已配置的连接中选择目标数据库,或新建数据库连接
- 输入查询需求 - 用自然语言描述查询需求
- 生成SQL - 系统自动生成SQL语句,用户可查看并确认
- 执行查询 - 点击执行按钮运行查询
- 保存/导出结果 - 可选择保存查询为模板或导出结果数据
应用场景
- 业务分析: 销售数据分析、客户行为分析、库存状况查询
- 日常报表: 自动生成日报、周报、业绩统计报表
- 技术支持: 故障排查数据分析、系统日志查询
安全特性
- 所有数据库连接信息加密存储
- 查询权限控制,防止越权访问
- SQL注入防护机制
- 敏感数据自动脱敏处理
技术优势
- 无需SQL专业知识即可查询数据库
- 大幅提高数据分析效率
- 降低人为编写SQL的错误风险
安装依赖
pip install --upgrade --quiet langchain-core langchain-community langchain-openai
编写代码
from langchain_core.prompts import ChatPromptTemplate
from langchain_community.utilities import SQLDatabase
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI
template = """Based on the table schema below, write a SQL query that would answer the user's question:
{schema}
Question: {question}
SQL Query:"""
prompt = ChatPromptTemplate.from_template(template)
db = SQLDatabase.from_uri("sqlite:///./Chinook.db")
def get_schema(_):
return db.get_table_info()
def run_query(query):
return db.run(query)
model = ChatOpenAI(model="gpt-3.5-turbo")
sql_response = (
RunnablePassthrough.assign(schema=get_schema)
| prompt
| model.bind(stop=["\nSQLResult:"])
| StrOutputParser()
)
message = sql_response.invoke({"question": "How many employees are there?"})
print(f"message: {message}")
运行结果
message: SELECT COUNT(*) AS totalEmployees
FROM Employee;