影刀RPA进阶教程_SQLite数据库存储实战流程数据的本地持久化方案
2026/6/15 11:55:51 网站建设 项目流程

影刀RPA进阶教程:SQLite数据库存储实战——流程数据的本地持久化方案

很多影刀RPA用户习惯用Excel存数据。应付几百条数据没问题,一旦数据量上到几万甚至几十万条,Excel就顶不住了——打开慢、写入慢、还容易卡死。

SQLite是一个轻量级的数据库,不需要安装任何服务,一个文件就是整个数据库。影刀RPA的Python代码块能直接操作SQLite,几万条数据秒级写入。

为什么不用Excel了

对比维度ExcelSQLite
写入10万条数据3-5分钟3-5秒
查询速度依赖Excel函数SQL查询,毫秒级
并发读写不支持支持(有锁机制)
数据量上限~100万行理论无上限
文件大小100万行约50MB100万行约20MB
部署复杂度需要OfficePython标准库自带

结论:日常小数据量用Excel方便,但数据量大的采集任务建议转到SQLite。

影刀中操作SQLite

Python标准库自带sqlite3模块,不需要额外安装。

店群矩阵自动化突破运营极限!

创建数据库和表

importsqlite3# 连接到数据库文件(不存在则自动创建)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:自增主键,每条数据自动生成唯一ID
  • REAL:浮点数类型(存价格);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()forrowinresult: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) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3025d293cc8d49f890e684f3d64ebcef.png#pic_center) ''')

有了这个索引,同样的标题+店铺名插入时就会自动跳过,不需要自己写去重逻辑。

实战:采集数据直接入库

完整的采集→入库流程:

temu店群自动化报活动案例

# 完整流程伪代码# 1. 连接数据库(流程开始时做一次)conn=sqlite3.connect(r'C:\数据\电商采集.db')# 2. 采集数据(影刀指令:获取相似元素列表 → 循环提取)# 采集到的数据追加到列表# 3. 批量写入(采集完一页写一次)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8bf3622ea68a41aa986cab74f1896e26.png#pic_center)cursor.executemany('INSERT OR IGNORE INTO goods (...) VALUES (...)',data_list)conn.commit()# 4. 关闭连接(流程结束时)conn.close()

关键原则:不要每采集一条就写一次数据库。攒够一批(比如一页50条)再批量写。

数据导出到Excel

SQLite存数据快,但日常查看还是Excel方便。导出的方法很简单:

importpandasaspd conn=sqlite3.connect(r'C:\数据\电商采集.db')# 查询需要导出的数据df=pd.read_sql_query('SELECT * FROM goods WHERE platform="拼多多"',conn)# 导出到Exceldf.to_excel(r'C:\数据\拼多多商品汇总.xlsx',index=False)conn.close()

注意:这需要安装pandas模块。影刀的Python环境设置里搜pandasopenpyxl安装。

常见问题

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

#影刀RPA #RPA自动化 #SQLite #数据库 #数据持久化

作者:林焱

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询