Skip to main content

Light weight local document-oriented database

Project description

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

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

petdb-0.8.4.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

petdb-0.8.4-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

File details

Details for the file petdb-0.8.4.tar.gz.

File metadata

  • Download URL: petdb-0.8.4.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.3

File hashes

Hashes for petdb-0.8.4.tar.gz
Algorithm Hash digest
SHA256 04e0af39bc745b02ec471ba533b68c8d1179fa3944d1d78c2855f1f234d00273
MD5 71f225acb5444b4e4c636c8736885810
BLAKE2b-256 faba1294e833d3214a7b241bfc02b3f5e9036b484e7443e2053ba07e94d6ca50

See more details on using hashes here.

File details

Details for the file petdb-0.8.4-py3-none-any.whl.

File metadata

  • Download URL: petdb-0.8.4-py3-none-any.whl
  • Upload date:
  • Size: 19.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.3

File hashes

Hashes for petdb-0.8.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9dc24100b9e39045a391e2f638994ae5b0e5ddb1cb254500ac99a579d50b9128
MD5 af9366628521c8023be0a5f3945e16a9
BLAKE2b-256 23d996d2283d8ade3bce3231879c445593830cae38eda500d199c57d84b22564

See more details on using hashes here.

Supported by

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