Skip to main content

A simple db using toml and pickle and dill.

Project description

TomlDB

TomlDB 是一个基于 TOML 文件的简单数据库库,它支持 JSONpickle/dill 序列化,并可以选择将大型对象存储到文件系统中。该库提供了线程安全的读写操作,确保多个进程可以安全地访问同一个数据库文件。

安装

推荐使用uv在已经初始化的项目中

uv add t4wefan-tomldb

或者

pip install t4wefan-tomldb

功能描述

功能

  • 存储和检索数据:使用 set 方法存储键值对,使用 get 方法检索数据。
  • 序列化支持:自动选择 JSONpickle 序列化方法存储数据。
  • 文件系统存储:对于大型或无法 JSON 序列化的对象,可以选择使用文件系统存储。
  • 线程安全:使用文件锁,确保多线程和多进程的安全访问。
  • 基本数据库操作:支持 setgetdeleteexistskeys 操作。

使用示例

from tomldb import TomlDB

# 创建一个数据库实例,选择是否将大型对象存储到文件系统
db = TomlDB() # 默认 use_pickle=False, store_to_fs=True,无法直接原生存进toml的对象会转为dill然后存入本地的文件,可以通过参数存为pickle

# 存储一个复杂的字典
db.set('user', {'name': 'Alice', 'age': 30, 'emails': ['alice@example.com', 'a.smith@example.com']})

# 检查键是否存在
if 'user' in db:
    print('user key exists in the database.')

# 检索数据
user_data = db.get('user')
print(user_data)  # 输出: {'name': 'Alice', 'age': 30, 'emails': ['alice@example.com', 'a.smith@example.com']}

# 删除数据
db.delete('user')

# 获取所有键
keys = db.keys()
print(keys)  # 输出: 所有存在的键的列表

db.clear_database() # 清空数据库,这会删除toml文件和所有存储的文件

注意事项

  • 如果选择将对象存储到文件系统中(store_to_fs=True),则会自动创建一个隐藏目录,用于存储 pickle/dill 文件。
  • 确保对数据库文件有读写权限。
  • 在多进程环境中使用时,建议使用 FileLock 提供的锁机制来确保线程安全。

许可证

本项目使用 MIT 许可证。有关更多信息,请参见 LICENSE 文件。

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

t4wefan_tomldb-0.1.9.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

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

t4wefan_tomldb-0.1.9-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file t4wefan_tomldb-0.1.9.tar.gz.

File metadata

  • Download URL: t4wefan_tomldb-0.1.9.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.5

File hashes

Hashes for t4wefan_tomldb-0.1.9.tar.gz
Algorithm Hash digest
SHA256 fbb6e54a19d06c99b75cbbde83da9a5a15d9d15e2c23cd6f7115e58c8838ac24
MD5 ef9b66fb193266657ca373eed7bd1651
BLAKE2b-256 075e34690caa919dc73e769a9d465a1883a4dee40347dffa88d75b346c4ab36a

See more details on using hashes here.

File details

Details for the file t4wefan_tomldb-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for t4wefan_tomldb-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 6c5fdd52a1db35c970b1b36ea6ae9f2804ea01a4b6cd5944a9cb1dff24bc5f16
MD5 ce70e17f1c735b676a0266816d3a2a26
BLAKE2b-256 da51340c2eb33d1bf8ef9e0c8d1e9793d39c4b1278388efccb2fcba84c9dd8c7

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