影刀RPA实操指南:MySQL数据库批量写入与Pandas互通的5个核心步骤

采集了几万条商品数据,Excel打开就卡死。

这时候该上MySQL了。我用影刀RPA做拼多多店群数据汇总时,从Excel转到MySQL,查询速度快了几十倍,多个流程还能同时读写。

核心就五步:连数据库、建表、批量写入、查询读取、Pandas互通。

picture.image

下面把完整流程拆开讲,都是电商采集后存储的实战场景。

影刀RPA连接MySQL数据库的配置方法

picture.image 场景:想把采集数据存到MySQL,团队共享访问。

方法:用影刀RPA的“连接数据库”指令,选MySQL,填连接信息。

操作步骤:

  1. 在右侧指令面板搜索“连接数据库”

picture.image 2. 数据库类型下拉选择“MySQL”

  1. 主机填MySQL服务器IP,端口默认3306
  2. 用户名和密码填数据库账号
  3. 数据库名填ecommerce_data
  4. 输出变量设为db_conn,后续指令引用

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/c1c6af1da80849ef943fad338fe00241~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1791965546&x-signature=ZApjt0MD8TiDsvOG3KiATWGjZpw%3D)
# 影刀RPA连接MySQL后,用“执行SQL”指令建表
CREATE TABLE IF NOT EXISTS pdd_products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255),
    price DECIMAL(10,2),
    sales INT,
    url VARCHAR(500),
    
![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/a10fac95e175478cbf080d2efb710862~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1791965546&x-signature=i9NgDRkQBo5N4T4UUc2LPIbX9b8%3D)
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

# 解释:
# id 自增主键
# price 用DECIMAL存金额,避免浮点误差
# created_at 自动记录插入时间

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/50d1fa4e23f44b34ae37868ca1b651fd~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1791965546&x-signature=YlSmtp5uGqcjxtXjZgUUecAhQNc%3D)
# utf8mb4 支持中文和emoji

注意:社区版30分钟/天,数据库操作很快,但调试时建议用创业版。

批量插入数据的两种方式与性能对比

picture.image

场景:采集了5000条商品,逐条插入太慢。

方法:用“执行SQL”指令,配合事务批量提交。

操作步骤:

  1. 拖入“执行SQL”指令,写INSERT语句
  2. 用“循环列表”遍历采集结果
  3. 循环体内用“执行SQL”插入单条
  4. 循环结束后用“提交事务”指令
# 方式一:逐条插入(慢,不推荐)
INSERT INTO pdd_products (title, price, sales, url)
VALUES ('商品A', 29.9, 1000, 'https://xxx');

# 方式二:批量插入(快,推荐)
INSERT INTO pdd_products (title, price, sales, url)
VALUES 
('商品A', 29.9, 1000, 'https://xxx'),
('商品B', 39.9, 2000, 'https://yyy'),
('商品C', 49.9, 3000, 'https://zzz');

# 影刀RPA中用Python构造批量SQL,一次执行500条
方式5000条耗时适用场景
逐条插入约3分钟数据量小
批量插入约10秒数据量大
Pandas to_sql约5秒推荐

实测:Pandas的to_sql最快,下面会讲。

用Pandas与MySQL互通实现快速读写

场景:想直接用Pandas读取数据库,或者把DataFrame写入数据库。

方法:用影刀RPA的“执行Python代码”指令,调Pandas的read_sql和to_sql。

# 影刀RPA中执行Python:Pandas写入MySQL
import pandas as pd
from sqlalchemy import create_engine

# 创建数据库连接
engine = create_engine('mysql+pymysql://user:password@host:3306/ecommerce_data?charset=utf8mb4')

# 读取采集数据
df = pd.read_excel('拼多多商品数据.xlsx')

# 写入数据库,if_exists='append'表示追加
df.to_sql('pdd_products', engine, if_exists='append', index=False)

# 查询数据
result = pd.read_sql('SELECT * FROM pdd_products WHERE price > 50', engine)

return len(result)

重点:to_sql的if_exists参数有三个值:fail(报错)、replace(覆盖)、append(追加)。采集场景用append。

查询数据与条件筛选的SQL写法

场景:想从数据库里筛选价格大于50、销量大于1000的商品。

方法:用“执行SQL”指令写SELECT语句,用“查询数据”指令拿结果。

操作步骤:

  • 拖入“执行SQL”指令,写SELECT
  • 输出变量设为query_result
  • 用“循环列表”遍历查询结果
  • 写入Excel或发送通知
# 查询价格大于50且销量大于1000的商品
SELECT title, price, sales 
FROM pdd_products 
WHERE price > 50 AND sales > 1000
ORDER BY sales DESC
LIMIT 100;

# 查询最近7天采集的数据
SELECT * FROM pdd_products 
WHERE created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY);

# 按价格区间统计数量
SELECT 
    CASE 
        WHEN price < 30 THEN '低价'
        WHEN price < 100 THEN '中价'
        ELSE '高价'
    END AS price_range,
    COUNT(*) AS count
FROM pdd_products
GROUP BY price_range;

避坑:MySQL的DATE_SUB和SQLite不同,注意语法差异。

数据库连接关闭与异常处理

场景:流程跑完没关数据库,连接池满了,下次连不上。

方法:用Try-Catch-Finally包住数据库操作,Finally里关闭连接。

操作步骤:

  1. 把数据库操作放进Try块
  2. Catch块加“输出日志”,记录错误
  3. Finally块加“关闭数据库连接”指令
  4. 设置最大重试次数3次
# 影刀RPA中执行Python:安全的数据库操作
import pymysql

conn = None
try:
    conn = pymysql.connect(
        host='localhost',
        user='root',
        password='password',
        database='ecommerce_data',
        charset='utf8mb4'
    )
    cursor = conn.cursor()
    cursor.execute("INSERT INTO pdd_products (title) VALUES (%s)", ('测试',))
    conn.commit()
except Exception as e:
    print(f"数据库错误:{e}")
finally:
    if conn:
        conn.close()
错误场景原因解决
连接被拒账号密码错检查配置
数据库被锁没关闭连接Finally里关闭
插入中文乱码编码问题连接时指定utf8mb4
表不存在没建表先执行CREATE TABLE
社区版额度不够30分钟/天创业版无限制

常见问题速查

Q:MySQL和SQLite选哪个?

A:本地单机用SQLite,团队共享用MySQL。影刀RPA两种都支持,指令类似。

Q:魔法指令能生成SQL语句吗?

A:影刀3.0的魔法指令可以对话式生成SQL,但生成后要自己检查字段名。

Q:数据库数据量太大怎么办?

A:定期归档,把历史数据导出后删除。MySQL单表建议不超过1000万行。

Q:能直接连飞书多维表格当数据库吗?

A:飞书多维表格有API,但不算真正数据库。数据量大还是用MySQL。

推荐资源

  • 影刀RPA官方学院“数据库操作”专题课,免费
  • 影刀社区搜索“MySQL批量写入”,有现成模板可下载
  • MySQL官方文档,有完整SQL语法说明

#影刀RPA #RPA自动化 #数据库操作 #MySQL #批量插入 #Pandas

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论