PandasAI连接LLM对MySQL数据库进行数据分析

发布时间:2026/8/1 13:58:11
PandasAI连接LLM对MySQL数据库进行数据分析 PandasAI连接LLM对MySQL数据库进行数据分析为什么你需要 PandasAI先问大家一个问题当你拿到一个 MySQL 数据库里面有几百万行数据你想快速知道“哪个地区的销售额最高”“最近三个月用户流失率趋势如何”你会怎么做传统做法是写 SQL 查询然后导入 Pandas 做二次处理再画图…… 这一套流程下来少说也要半小时。而且如果你不熟悉 SQL 语法或者数据库表结构复杂光是 join 和 group by 就够你头疼的了。而 PandasAI 的出现直接把“用自然语言问数据库”变成了现实。你只需要像跟人说话一样提问它就能自动生成代码、执行查询、返回结果甚至画出图表。本文就带你一步步实现 PandasAI 连接 LLM 对 MySQL 数据库进行数据分析。## PandasAI 是什么PandasAI 是一个基于 Pandas 的 AI 增强库它把大语言模型LLM的能力封装成简单的 API。你不需要写复杂的 pandas 操作只需要传入自然语言问题它会自动- 理解你的问题意图- 生成对应的 Pandas 代码- 执行代码并返回结果或图表目前 PandasAI 支持多种 LLM 后端包括 OpenAI、Azure OpenAI、Google Gemini 等。连接 MySQL 数据库时它会把问题转换成 SQL 查询再通过 SQLAlchemy 连接数据库执行。## 准备工作安装与配置在开始之前你需要确保以下几点1. 已安装 Python 3.82. 有一个可访问的 MySQL 数据库本地或远程均可3. 已安装必要的库打开终端执行以下命令安装依赖bashpip install pandasaipip install sqlalchemy pymysql如果你使用 OpenAI 的模型还需要设置 API Key。建议在环境变量中配置bashexport OPENAI_API_KEY你的API Key## 连接 MySQL 数据库### 第一步创建数据库连接我们使用 SQLAlchemy 来创建数据库连接。假设你的 MySQL 数据库名为sales_db用户名是root密码是123456主机是localhost端口是3306。pythonfrom sqlalchemy import create_engine# 创建数据库连接字符串# 格式mysqlpymysql://用户名:密码主机:端口/数据库名DATABASE_URI mysqlpymysql://root:123456localhost:3306/sales_db# 创建数据库引擎engine create_engine(DATABASE_URI)# 测试连接是否成功with engine.connect() as conn: print(数据库连接成功)### 第二步初始化 PandasAI 并连接 LLM接下来我们需要创建一个 PandasAI 实例并指定 LLM 后端。这里以 OpenAI 为例pythonfrom pandasai import SmartDataframefrom pandasai.llm import OpenAI# 初始化 LLM使用 OpenAI 的 GPT-4 模型llm OpenAI(modelgpt-4)# 创建 SmartDataframe传入 LLM 实例和数据库连接df SmartDataframe( SELECT * FROM orders, # 可以是一个 SQL 查询也可以直接传表名 config{llm: llm}, connectionengine)# 现在你可以用自然语言提问了response df.chat(哪个区域的销售额最高)print(response)看到没你只需要把数据库连接引擎传给 SmartDataframe然后就可以像聊天一样问问题了。它内部会自动把问题转换成 SQL 并执行。## 实战案例分析销售数据### 场景描述假设我们有一个orders表包含以下字段-order_id订单编号-customer_id客户编号-region销售区域如华东、华南、华北-amount订单金额-order_date订单日期-status订单状态已完成、已取消、待支付我们想要分析1. 各区域的销售总额2. 最近一个月的销售趋势3. 取消订单的比例### 代码示例多轮对话分析pythonfrom pandasai import SmartDataframefrom pandasai.llm import OpenAIfrom sqlalchemy import create_engine# 配置数据库连接engine create_engine(mysqlpymysql://root:123456localhost:3306/sales_db)# 初始化 LLM 和 SmartDataframellm OpenAI(modelgpt-4)df SmartDataframe(SELECT * FROM orders, config{llm: llm}, connectionengine)# 第一问各区域的销售总额result1 df.chat(按区域汇总销售总额从高到低排序)print(各区域销售额)print(result1)# 第二问最近一个月的每日销售趋势result2 df.chat(统计最近30天每天的销售总额并画出趋势图)print(销售趋势)print(result2)# 第三问取消订单的比例result3 df.chat(计算取消订单占总订单的比例)print(取消比例)print(result3)运行这段代码你会看到 PandasAI 自动完成了所有数据聚合、分组、排序等操作。如果你要求它画图它还会自动生成 matplotlib 图表并展示。## 高级用法自定义提示词与缓存有时候你可能希望对 LLM 的提问方式做更精细的控制。PandasAI 支持自定义提示词模板还可以开启缓存避免重复查询。pythonfrom pandasai import SmartDataframefrom pandasai.llm import OpenAIfrom pandasai.prompts import PromptTemplate# 自定义提示词模板custom_prompt PromptTemplate( question请分析以下销售数据重点关注高价值客户{question}, instruction使用简洁的中文回答并附上关键数据指标。)# 开启缓存避免相同问题重复执行查询config { llm: OpenAI(modelgpt-4), cache: True, # 开启缓存 custom_prompt: custom_prompt, # 自定义提示词}df SmartDataframe(SELECT * FROM orders, configconfig, connectionengine)# 提问会使用自定义提示词result df.chat(找出消费金额最高的前5位客户)print(result)## 注意事项与优化建议1.数据安全因为 LLM 会生成 SQL 查询务必确保数据库账号只有只读权限避免误操作导致数据损坏。2.性能问题如果表数据量很大建议先在 SQL 查询中限定范围比如 WHERE 条件或者使用采样数据。3.模型选择GPT-4 效果最好但贵如果预算有限可以先用 GPT-3.5-turbo对于简单问题也够用。4.错误处理PandasAI 偶尔会生成错误的 SQL建议对返回结果做类型检查或者用 try-except 包裹。## 总结PandasAI 把 LLM 与数据库分析完美结合让我们告别繁琐的 SQL 和 pandas 操作。你只需要像跟同事聊天一样提问它就能自动完成数据查询、清洗、分析和可视化。本文从环境搭建到实战案例完整演示了如何连接 MySQL 数据库进行自然语言驱动的数据分析。当然PandasAI 仍在快速迭代中功能会越来越强大。但请记住它目前更适合做快速探索性分析对于生产环境的关键决策建议还是配合人工审查。希望本文能帮助你打开 AI 数据分析的大门让数据工作变得更加轻松高效。