跳转到主要内容

持久性键值容器库,与Python dict兼容

项目描述

🗿Stones

Build Status Codecov Python 3.12

持久键值存储的基础库,100%与Python dict兼容。

Stones image

本项目背后的理念是拥有一个用于众多持久键值存储的通用接口,易于使用和扩展,并附带一些额外的内置功能。灵感来自 DatastoreMemDown

它与对象查询库(如:JMESPath)、JSONPath RWObjectPath)配合良好。

功能和限制

  • 与您已从 Python dict 熟悉的相同API
  • 线程安全更新
  • 出色的测试覆盖率(>90%)
  • 第一个限制:键只能是字节。为了兼容性,它们从str转换为bytes。
  • 第二个限制:值实际上也是bytes,但序列化器(默认为Pickle)将数据结构转换为bytes
  • 有几种序列化器可用:Pickle、JSON和可选的:cbor2、msgpack。您可以轻松添加自己的序列化器,请参阅下面的文档。
  • 第三项限制:数据序列化后,您必须继续使用相同的序列化器。如果出于某种原因,您想更换序列化器,您可以创建一个新的Store,使用您的新序列化器,并从旧Store复制所有数据。
  • Memory Store和LMDB默认可用。其他键值存储(DBM、LevelDB、Redis)曾经实现过,但现在已经不再包含在内。

安装

本项目使用Python 3.10+pip

$ pip install stones

用法

from stones import stone, LmdbStore

# Create a new persistent dictionary, backed by LMDB
stor = stone('my-db', LmdbStore, serialize='pickle')

# You can use it just like a normal Python dict,
# with the limitation that keys are bytes,
# and the values must be serializable
stor[b's'] = b'whatever'
stor[b'li'] = [True, False, None, -1]
stor[b'tu'] = ('Yes', 'No', 3)

b's' in stor
# True
len(stor)
# 3
stor.keys()
# [b'li', b's', b'tu']
stor.values()
# [[True, False, None, -1], b'whatever', ('Yes', 'No', 3)]

# The data is decoded in place
-1 in stor[b'li']
# True
3 in stor[b'tu']
# True

del stor[b'li']
stor.get(b'li', False)
# False

# The data is persisted
del stor
# Re-create the store, using the same encoder
stor = stone('my-db', LmdbStore, serialize='pickle')

len(stor)
# 2
stor.keys()
# [b's', b'tu']

或多或少类似的项目

Python

Node.js

  • lowDB - 简单易用的本地JSON数据库。由纯JS提供支持。
  • Keyv - 通过存储适配器支持多个后端键值存储。支持基于TTL的过期,适合作为缓存或持久化键值存储。
  • MemDown - Node.js和浏览器的抽象LevelDown存储
  • AppStorage - Node.js的LocalStorage,自动将对象与JSON文件同步
  • NeDB - Node.js、nw.js、Electron和浏览器的嵌入式数据库
  • FortuneJS - 具有通用接口的数据库抽象层
  • PouchDB - 袖珍数据库
  • ToiletDB - 将对象冲刷到JSON文件
  • whatDB - 用于Small Web应用程序的内存JavaScript数据库,持久化到JSON文件

其他

  • CubDB - 使用Elixir语言编写的嵌入式键值数据库。它本地运行,无模式,由单个文件支持。

许可证

MIT © Cristi Constantin。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

stones-0.3.0.tar.gz (13.5 kB 查看哈希)

上传时间 源代码

构建发行版

stones-0.3.0-py3-none-any.whl (10.8 kB 查看哈希)

上传时间 Python 3

支持者