Skip to main content

一个轻量级的键值存储数据库,使用JSON文件格式

Project description

Simple KVDB

一个轻量级的键值存储数据库,使用JSON文件格式存储数据。

特性

  • 🚀 简单易用的API
  • 📁 使用JSON文件存储,数据可读性强
  • 🔒 线程安全
  • ⚡ 轻量级,无外部依赖
  • 🛡️ 自动备份和错误处理
  • 📊 支持复杂数据类型

安装

pip install simple-kvdb

快速开始

基本使用

from simple_kvdb import KVDB

# 创建数据库实例
db = KVDB("my_database.json")

# 存储数据
db.set("user:1", {"name": "张三", "age": 25})
db.set("user:2", {"name": "李四", "age": 30})

# 获取数据
user = db.get("user:1")
print(user)  # {'name': '张三', 'age': 25}

# 检查键是否存在
if db.exists("user:1"):
    print("用户存在")

# 删除数据
db.delete("user:2")

# 获取所有键
all_keys = db.keys()
print(all_keys)  # ['user:1']

# 获取数据库大小
size = db.size()
print(f"数据库包含 {size} 个键值对")

高级功能

from simple_kvdb import KVDB

db = KVDB("advanced_db.json")

# 批量操作
db.set_many({
    "config:theme": "dark",
    "config:language": "zh-CN",
    "stats:visits": 1000
})

# 获取多个值
values = db.get_many(["config:theme", "config:language"])
print(values)  # {'config:theme': 'dark', 'config:language': 'zh-CN'}

# 条件查询
theme = db.get("config:theme", default="light")
print(theme)  # dark

# 原子操作
db.atomic_update("stats:visits", lambda x: x + 1)

# 清空数据库
db.clear()

# 导出数据
data = db.export()
print(data)  # {}

# 从字典导入数据
db.import_data({"key1": "value1", "key2": "value2"})

上下文管理器

from simple_kvdb import KVDB

# 使用上下文管理器确保数据安全保存
with KVDB("temp_db.json") as db:
    db.set("temp_key", "temp_value")
    # 退出时自动保存

API 参考

KVDB 类

初始化参数

  • file_path (str): 数据库文件路径
  • auto_save (bool): 是否自动保存,默认为 True
  • backup_count (int): 备份文件数量,默认为 3

主要方法

  • set(key, value): 设置键值对
  • get(key, default=None): 获取值
  • delete(key): 删除键值对
  • exists(key): 检查键是否存在
  • keys(): 获取所有键
  • values(): 获取所有值
  • items(): 获取所有键值对
  • size(): 获取数据库大小
  • clear(): 清空数据库
  • save(): 手动保存数据
  • load(): 重新加载数据
  • backup(): 创建备份
  • set_many(data): 批量设置
  • get_many(keys): 批量获取
  • atomic_update(key, func): 原子更新
  • export(): 导出数据
  • import_data(data): 导入数据

错误处理

from simple_kvdb import KVDB, KVDBError

try:
    db = KVDB("test.json")
    db.set("key", "value")
except KVDBError as e:
    print(f"数据库错误: {e}")

性能考虑

  • 对于大量数据,建议定期调用 save() 方法
  • 使用 auto_save=False 可以提高写入性能
  • 对于频繁访问的数据,考虑使用缓存

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simple_kvdb-1.0.0.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simple_kvdb-1.0.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file simple_kvdb-1.0.0.tar.gz.

File metadata

  • Download URL: simple_kvdb-1.0.0.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for simple_kvdb-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e693d4d22270b4e2ea346b434730f5200bffcc67fdb5a86900b7b1a9d34c1e8d
MD5 fbb2ef99f699eec38b2a85107e074ddc
BLAKE2b-256 2f0e012b9e8b843dd98d82bd186d8f83f8f779ec7bc7779f9ca526052d2ebf8e

See more details on using hashes here.

File details

Details for the file simple_kvdb-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: simple_kvdb-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for simple_kvdb-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 953ff6268a93104119db464dce693febcc3ded626bb9e350111b586383f8ee78
MD5 e74194a143ccb5d8d68002cbd617473d
BLAKE2b-256 1ac01effe2954f7146988e8ce20dcc691a72b57bed22c7267b1f5bee7acc50bb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page