A tiny text-based database.
dbetto is a lightweight Python library that enables seamless access and management of text-based databases (JSON/YAML) scattered across your filesystem. Whether you're handling nested data structures or querying data by validity periods, dbetto simplifies it all with an intuitive interface.
The project was originally developed to efficiently manage metadata for the LEGEND experiment.
- Access JSON/YAML files like a Python dictionary
- Attribute-style access with tab-completion for rapid query
- Time-sensitive data querying with validity rules
- Data remapping and grouping functionalities
Install from PyPI:
pip install dbetto
Access data arbitrarily structured as JSON or YAML files:
>>> from dbetto import TextDB
>>> db = TextDB("/path/to/data/folder")
>>> db["dir1"]["file1.json"]["value"]
1
>>> db.dir1.file1.value
1
Query data valid on a given time period:
>>> from datetime import datetime
>>> db.on(datetime(2023, 1, 10, 9, 53, 0)).value
3
Map data according to alternative keys:
>>> chmap = db["detectors.yaml"]
>>> chmap.V05266A
{'name': 'V05266A',
'location': {'string': 1, 'position': 4},
'daq': {'crate': 0,
'rawid': 1104003,
...
>>> chmap.map("daq.rawid")[1104003]
{'name': 'V05266A',
'location': {'string': 1, 'position': 4},
'daq': {'crate': 0,
'rawid': 1104003}}
>>> grouped = chmap.group("electronics.cc4.id")["C3"]
>>> grouped.map("name").keys()
dict_keys(['V02160A', 'V02160B', 'V05261B', 'V05266A', 'V05266B', 'V05268B', 'V05612A'])
Have a look at the docs for more!