原创

openclaw 连接 MySQL 实现数据分析

一、技能目标

  1. 允许用户提供 MySQL 连接信息(URL、用户名、密码)。
  2. 能够查询数据库表数据。
  3. 对数据进行分析,例如统计销量、趋势、Top N 数据。
  4. 生成报表(Excel、PDF 或 HTML 可视化表格)。

二、技能输入参数

{
"mysql_url": "jdbc:mysql://host:port/database",
"username": "root",
"password": "123456",
"query": "SELECT * FROM orders"
}
  • mysql_url:数据库连接 URL。
  • username / password:数据库账号。
  • query:可选,自定义 SQL 查询。

三、技能核心步骤

1. 连接 MySQL

  • 使用 JDBC(Java)或者 Python mysql-connector-python 连接数据库。
  • 小龙虾技能内部可以封装成一个函数:
import mysql.connectordef connect_mysql(url, user, password):
conn = mysql.connector.connect(
host=url.split("//")[1].split(":")[0],
port=int(url.split(":")[2].split("/")[0]),
database=url.split("/")[-1],
user=user,
password=password
)
return conn

2. 查询数据

  • 用技能提供 SQL 执行接口:
def query_data(conn, sql):
cursor = conn.cursor(dictionary=True)
cursor.execute(sql)
result = cursor.fetchall()
cursor.close()
return result

3. 数据分析示例

  • 假设查询的是小龙虾订单表 orders,字段包含:
    • order_idproduct_namequantitypriceorder_date
  • 可以分析:
    • 每天销量统计
    • 最畅销的商品 Top 5
    • 总收入统计
import pandas as pddef analyze_data(data):
df = pd.DataFrame(data)
daily_sales = df.groupby('order_date')['quantity'].sum()
top_products = df.groupby('product_name')['quantity'].sum().sort_values(ascending=False).head(5)
total_revenue = (df['quantity'] * df['price']).sum()
return daily_sales, top_products, total_revenue

4. 生成报表

  • 可导出 Excel 或生成 HTML 可视化表格:
def generate_report(daily_sales, top_products, total_revenue, file_path="report.xlsx"):
with pd.ExcelWriter(file_path) as writer:
daily_sales.to_excel(writer, sheet_name='Daily Sales')
top_products.to_excel(writer, sheet_name='Top Products')
pd.DataFrame({'Total Revenue':[total_revenue]}).to_excel(writer, sheet_name='Revenue')
  • 可选:用 matplotlibplotly 生成图表,增强报表可视化。

四、技能调用流程(用户视角)

  1. 打开“小龙虾技能”,输入:
    • 数据库 URL、用户名、密码
    • SQL 查询(可用默认查询)
  2. 小龙虾执行:
    1. 连接数据库
    2. 获取数据
    3. 分析数据
    4. 生成报表
  3. 用户下载报表或查看可视化结果。

五、可拓展功能

  • 自动定时生成报表(每天/每周)
  • 数据可视化图表嵌入报表
  • 自动发送报表到邮箱或团队群
  • 支持多数据库(PostgreSQL、SQL Server)
正文到此结束
Loading...