影刀RPA进阶教程_SQLite数据库存储实战流程数据的本地持久化方案
·
影刀RPA进阶教程:SQLite数据库存储实战——流程数据的本地持久化方案
很多影刀RPA用户习惯用Excel存数据。应付几百条数据没问题,一旦数据量上到几万甚至几十万条,Excel就顶不住了——打开慢、写入慢、还容易卡死。
SQLite是一个轻量级的数据库,不需要安装任何服务,一个文件就是整个数据库。 影刀RPA的Python代码块能直接操作SQLite,几万条数据秒级写入。
为什么不用Excel了
| 对比维度 | Excel | SQLite |
|---|---|---|
| 写入10万条数据 | 3-5分钟 | 3-5秒 |
| 查询速度 | 依赖Excel函数 | SQL查询,毫秒级 |
| 并发读写 | 不支持 | 支持(有锁机制) |
| 数据量上限 | ~100万行 | 理论无上限 |
| 文件大小 | 100万行约50MB | 100万行约20MB |
| 部署复杂度 | 需要Office | Python标准库自带 |
结论:日常小数据量用Excel方便,但数据量大的采集任务建议转到SQLite。
影刀中操作SQLite
Python标准库自带sqlite3模块,不需要额外安装。

店群矩阵自动化突破运营极限!
创建数据库和表
import sqlite3
# 连接到数据库文件(不存在则自动创建)
conn = sqlite3.connect(r'C:\数据\电商采集.db')
cursor = conn.cursor()
# 创建商品数据表
cursor.execute('''
CREATE TABLE IF NOT EXISTS goods (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
price REAL,
sales INTEGER,
shop_name TEXT,
platform TEXT,
collect_time TEXT DEFAULT (datetime('now','localtime'))
)
''')
conn.commit()
代码解释:
sqlite3.connect(文件路径):连接数据库,文件不存在自动创建CREATE TABLE IF NOT EXISTS:如果表不存在就创建,存在就跳过(不会重复建表覆盖数据)PRIMARY KEY AUTOINCREMENT:自增主键,每条数据自动生成唯一IDREAL:浮点数类型(存价格);INTEGER:整数(存销量);TEXT:字符串datetime('now','localtime'):SQLite内置函数,自动填入当前时间
批量插入数据
# 批量插入采集到的商品数据
data_list = [
('羽绒服男款加厚', 299.0, 1523, '品牌旗舰店', '拼多多'),
('冬季保暖内衣', 89.9, 8230, '保暖之家', '拼多多'),
# ...更多数据
]
cursor.executemany('''
INSERT INTO goods (title, price, sales, shop_name, platform)
VALUES (?, ?, ?, ?, ?)
''', data_list)
conn.commit()
print(f'成功写入{len(data_list)}条数据')
重点:executemany 比循环 execute 快几十倍。在采集循环中先把数据攒成列表,循环结束后一次写入。
查询数据

# 查询销量前10的商品
cursor.execute('''
SELECT title, price, sales, shop_name
FROM goods
WHERE platform = '拼多多'
ORDER BY sales DESC
LIMIT 10
''')
result = cursor.fetchall()
for row in result:
print(f'{row[0]} | ¥{row[1]} | 销量:{row[2]}')
数据去重
SQLite的去重比Excel简单太多:
# 在插入前创建唯一索引,防止重复数据
cursor.execute('''
CREATE UNIQUE INDEX IF NOT EXISTS idx_title_shop
ON goods(title, shop_name)

''')
有了这个索引,同样的标题+店铺名插入时就会自动跳过,不需要自己写去重逻辑。
实战:采集数据直接入库
完整的采集→入库流程:
temu店群自动化报活动案例
# 完整流程伪代码
# 1. 连接数据库(流程开始时做一次)
conn = sqlite3.connect(r'C:\数据\电商采集.db')
# 2. 采集数据(影刀指令:获取相似元素列表 → 循环提取)
# 采集到的数据追加到列表
# 3. 批量写入(采集完一页写一次)

cursor.executemany('INSERT OR IGNORE INTO goods (...) VALUES (...)', data_list)
conn.commit()
# 4. 关闭连接(流程结束时)
conn.close()
关键原则:不要每采集一条就写一次数据库。攒够一批(比如一页50条)再批量写。
数据导出到Excel
SQLite存数据快,但日常查看还是Excel方便。导出的方法很简单:
import pandas as pd
conn = sqlite3.connect(r'C:\数据\电商采集.db')
# 查询需要导出的数据
df = pd.read_sql_query('SELECT * FROM goods WHERE platform="拼多多"', conn)
# 导出到Excel
df.to_excel(r'C:\数据\拼多多商品汇总.xlsx', index=False)
conn.close()
注意:这需要安装pandas模块。影刀的Python环境设置里搜pandas和openpyxl安装。

常见问题
| 问题 | 原因 | 解决 |
|---|---|---|
| “database is locked” | 同时有多个连接在写 | 确保流程里只有一个连接对象,用完就关 |
| 中文乱码 | 编码问题 | SQLite默认UTF-8,不乱码。检查其他环节 |
| 数据重复 | 没有唯一索引 | 加UNIQUE INDEX或INSERT时用OR IGNORE |
| 文件越来越大 | 删除数据不回收空间 | 定期执行VACUUM命令 |
#影刀RPA #RPA自动化 #SQLite #数据库 #数据持久化

作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
更多推荐






所有评论(0)