Usage

Insert

<Piuma>.insert(
    document: dict,
    id: Optional[int]
) -> id: int:

Inserts a new document into the database. The document value field only takes in dictionaries. This functions returns the value of the document once inserted.

>>> from piuma import Piuma
>>> db = Piuma()
>>> db.insert({"a":0})

Insert a document with a specific id with an integer value, this field is optional.

>>> db.insert({"b":1}, id=1234)
>>> db.insert({"c":[0,1,2]})

Note

The automatic ids that documents without a specified id receive go from the biggest id in the database, if you insert new document with a specified id of 1234 the next document’s id will be 1235 unless specified.

Get

<Piuma>.get(
    id: int,
) -> Optional[dict]

Returns a document by the id. The document id field only takes in integers.

>>> db.get(id=1)
{'a':0}

Remove

<Piuma>.remove(
    id: int,
) -> None:

Removes a document by the specified id. The document id field only takes in integers.

>>> db.remove(id=1234)

Update

<Piuma>.update(
    document: dict,
    id: int
) -> None:

Updates a document by the id. The document id field only takes in integers. This function completely rewrites the content of the document.

>>> db.update({"c":[0,1,2], "g": "The quick brown fox"}, id=1235)
>>> db.all()
{1: {'a':0}, 1235: {"c":[0,1,2], "g": "The quick brown fox"}}

All

piuma.All(
    None
) -> database: Dict

Returns the entire database.

>>> db.all()
{1: {'a':0}, 1235: {"c":[0,1,2], "g": "The quick brown fox"}}

Other Usage

Storages

When creating the Piuma database object you can pass in a custom storage object. This storage object must have a read() and a write(data) method.

from piuma.storage import Storage

class LoggingMemoryStorage(Storage):

    def __init__(self):
        self._memory = None

    def read(self) -> Optional[Dict[int, Dict[Any, Any]]]:
        print("read")
        return self._memory

    def write(self, data: Dict[int, Dict[Any, Any]]) -> None:
        print("write")
        self._memory = data

Once this custom memory is written you can pass in the class when creating the Piuma object. When passing through the custom storage object make sure to call it.

>>> from piuma import Piuma
>>> db = Piuma(storage=LoggingMemoryStorage())
>>> db.insert({"a":0})
read
1