
PickleDB 是什么?
PickleDB 本质上是个 纯 Python 实现的键值存储,底层靠 pickle(序列化)+ orjson(高速 JSON)来写磁盘。它的目标很简单:把数据当成普通的 Python 对象(list、dict、str …)直接塞进去,想取就取,像操作本地变量一样自然。别看名字里有 “pickle”,实则它并不只会“腌黄瓜”,更像是 轻量级的本地 NoSQL,随装随用,零依赖,几行代码就能搞定。
它解决了哪些痛点?
常见痛点 | PickleDB 的解决方案 |
配置繁琐 | 只需要 pip install pickledb,不需要额外的服务进程或服务器。 |
学习成本高 | API 极简:db.set(key, value)、db.get(key),和普通字典几乎一样。 |
性能瓶颈 | 采用 orjson 进行序列化,写磁盘快,读内存更快,毫秒级响应。 |
数据安全 | 支持 原子保存(atomic save),即使程序崩溃也不会导致文件损坏。 |
异步需求 | 提供 AsyncPickleDB,配合 aiofiles 能在 async 环境下使用。 |
安装 & 使用教程
优缺点一览
优点 | 缺点 |
✅ 极简 API:几行代码即可完成增删改查。 | ❌ 全量加载:整个 DB 必须放在内存,超大数据集受限。 |
✅ 零依赖:仅依赖标准库 + orjson,部署轻松。 | ❌ 功能有限:不支持复杂查询、事务、索引等高级特性。 |
✅ 原子保存:写文件时自动采用临时文件+替换,防止数据损坏。 | ❌ 单线程写:并发写入仍需自行加锁。 |
✅ 支持异步:AsyncPickleDB 配合 aiofiles,适配现代异步框架。 | ❌ 不适合大规模分布式:只能本地单机使用。 |
✅ 跨平台:Windows、Linux、macOS 通吃。 | ❌ 缺少可视化管理工具:只能通过代码或手动编辑文件。 |
性能小实验(来自官方 benchmark)
Entries(条目) | Memory Load Time | Retrieval Time | Save Time |
1M | 1.21 sec | 0.90 sec | 0.17 sec |
10M | 14.11 sec | 10.30 sec | 1.67 sec |
50M | 93.79 sec | 136.42 sec | 61.08 sec |
测试环境:StarLabs StarLite Mk IV(Quad‑Core Intel® Pentium® Silver N5030 @ 1.10 GHz,8 GB RAM),系统为 elementary OS 7.1 Horus。
可以看到,即使是几千万条记录,PickleDB 依旧在 秒级 读取和写入,足以满足大多数小型服务、原型开发、个人工具的需求。
总结 & 小贴士
项目地址:https://github.com/patx/pickledb