Skip to main content

PetDB

PetDB is a simple and lightweight NOSQL JSON database for pet projects. It was designed with the convenient and comfortable mongo-like API. In this package also was implemented simple array with the same API, that supports not only dict documents but any built-in python type.

PyPI - Python Version PyPI - Version Documentation Status PyPI - License Downloads

Installation

PetDB can be installed with pip:

python -m pip install petdb

You can also download the project source and do:

pip install .

Dependencies

PetDB was created as a lightweight package, so there are no dependencies.

Usage

To use this database you should only import PetDB and get an instance. By default, it will create folder for storing collections in the current directory, but you can provide any path:

from petdb import PetDB

db = PetDB.get(os.path.join(os.getcwd(), "persistent", "storage"))

Next you should select the collection, if it doesn't exist, it will created automatically. You can do it just by attribute access, by index key or use a method (it will create a new one if it doesn't exist):

users = db.users
subscriptions = db["subscriptions"]
payments = db.collection("payments")

Examples

>>> from petdb import PetDB
>>> db = PetDB.get()
>>> users = db["users"]
>>> users.insert_many([
...     {"name": "John", "age": 28, "subscriptions": ["tv", "cloud"]},
...     {"name": "Michael", "age": 32, "subscriptions": ["tv"]},
...     {"name": "Sam", "age": 18, "subscriptions": ["music", "cloud"]},
...     {"name": "Alex", "age": 24, "subscriptions": ["tv", "music"]},
...     {"name": "Bob", "age": 18, "subscriptions": ["music"]},
... ])
[{"name": "John", "age": 28, "subscriptions": ["tv", "cloud"], "_id": "..."}, ...]
>>> users.update(
...     {"$append": {"subscriptions": "games"}},
...     {"age": {"$lt": 25}, "subscriptions": {"$contains": "music"}}
... )
>>> selection = users.filter({"age": 18}).sort("name")
>>> print(selection.pick("name").list())
["Bob", "Sam"]
>>> selection.remove()
[{"name": "Bob", "age": 18, "subscriptions": ["music", "games"], "_id": "..."},
{"name": "Sam", "age": 18, "subscriptions": ["music", "cloud", "games"], "_id": "..."}]
>>> for user in users:
...     print(user)
...
{'name': 'John', 'age': 28, 'subscriptions': ['tv', 'cloud'], '_id': '...'}
{'name': 'Michael', 'age': 32, 'subscriptions': ['tv'], '_id': '...'}
{'name': 'Alex', 'age': 24, 'subscriptions': ['tv', 'music', 'games'], '_id': '...'}

Documentation

Documentation is available at https://petdb.readthedocs.io/en/latest/

Testing

python -m tests

Release files for petdb 0.10.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for petdb 0.10.2
File Size Uploaded
petdb-0.10.2.tar.gz 17.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for petdb 0.10.2
File Interpreter ABI Platform
petdb-0.10.2-py3-none-any.whl Python 3 none any Details

Total release size: 36.8 kB

Release files / petdb-0.10.2.tar.gz

Download URL petdb-0.10.2.tar.gz
Size 17.6 kB
Tags Source
SHA-256 checksum
How to use checksums
f543b3a1b72b83cff3560108cd20e72d2e7705210c4bffff24847d6fecee4bdd
BLAKE2b-256 checksum
How to use checksums
d3e89664b90fe61a7662487ee80120535d29cb44fb224cbaa9d239d095a56390
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.13.0

Release files / petdb-0.10.2-py3-none-any.whl

Download URL petdb-0.10.2-py3-none-any.whl
Size 19.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c6e81e226a70cd0b3b4939b4ddd129790d6c8dc8fac3b9089d892df0d74e2dc9
BLAKE2b-256 checksum
How to use checksums
d83f8bdfde6d6dcb3b6bd6c46139004fe83e3d3aa344ce391d2331291910a3a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.13.0

Release history Release notifications | RSS feed

This release

0.10.2 This release

2 release files

0.10.1

2 release files

0.9.8

2 release files

0.9.6

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.20

2 release files

0.7.19

2 release files

0.7.18

2 release files

0.7.17

2 release files

0.7.15

2 release files

0.7.14

2 release files

0.7.13

2 release files

0.7.12

2 release files

0.7.9

2 release files

0.7.8

2 release files

0.7.7

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

1 release file

0.3.5

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page