采集了几万条商品数据,Excel打开就卡死。
这时候该上MySQL了。我用影刀RPA做拼多多店群数据汇总时,从Excel转到MySQL,查询速度快了几十倍,多个流程还能同时读写。
核心就五步:连数据库、建表、批量写入、查询读取、Pandas互通。
下面把完整流程拆开讲,都是电商采集后存储的实战场景。
影刀RPA连接MySQL数据库的配置方法
场景:想把采集数据存到MySQL,团队共享访问。
方法:用影刀RPA的“连接数据库”指令,选MySQL,填连接信息。
操作步骤:
- 在右侧指令面板搜索“连接数据库”
2. 数据库类型下拉选择“MySQL”
- 主机填MySQL服务器IP,端口默认3306
- 用户名和密码填数据库账号
- 数据库名填
ecommerce_data - 输出变量设为
db_conn,后续指令引用

# 影刀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),

created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
# 解释:
# id 自增主键
# price 用DECIMAL存金额,避免浮点误差
# created_at 自动记录插入时间

# utf8mb4 支持中文和emoji
注意:社区版30分钟/天,数据库操作很快,但调试时建议用创业版。
批量插入数据的两种方式与性能对比
场景:采集了5000条商品,逐条插入太慢。
方法:用“执行SQL”指令,配合事务批量提交。
操作步骤:
- 拖入“执行SQL”指令,写INSERT语句
- 用“循环列表”遍历采集结果
- 循环体内用“执行SQL”插入单条
- 循环结束后用“提交事务”指令
# 方式一:逐条插入(慢,不推荐)
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里关闭连接。
操作步骤:
- 把数据库操作放进Try块
- Catch块加“输出日志”,记录错误
- Finally块加“关闭数据库连接”指令
- 设置最大重试次数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学习手册》系列文章之一,内容源于实操经验的整理与分享。
