Skip to main content

A library to handle persistent memory

Project description

membank

Python library for storing data in persistent memory (sqlite, postgresql, berkeley db)

goals

Provide interface to database storage that automates heavy lifting of database setup, migration, table definition, query construction.

quick intro

add items to persistent storage

import dataclasses as data # Python standard library

from membank import LoadMemory

@data.dataclass
class Dog():
    breed: str
    color: str = "black"
    weight: float = 0
    data: dict = data.field(default_factory=dict)
    picture: bytes = b''
    aliases: list = data.field(default_factory=list)

@data.dataclass
class DogWithID():
    id: str = data.field(default=None, metadata={"key": True})
    breed: str
    color: str = "black"
    weight: float = 0
    data: dict = data.field(default_factory=dict)
    picture: bytes = b''
    alive: bool = True

memory = LoadMemory() # defaults to sqlite memory
memory.put(Dog('Puli')) # stores object into database
dog = memory.get.dog() # retrieves first object found
assert dog.breed == 'Puli'
dog.color = "white"
memory.put(dog) # be carefull you store another dog
dog = memory.put(DogWithID("AB1234", "Puli"))
dog = memory.get.dogwithid(id="AB1234")
dog.color = "white"
memory.put(dog) # now you update existing dog

retrieve those after

memory = LoadMemory() # to make this work in new process, don't use sqlite memory
dog = memory.get.dog() # get first found or None
assert dog.color == 'black'
dogs = memory.get("dog") # always returns list (empty or with items)
assert len(dogs) >= 0

editing returned objects

dog = memory.get.dog()
dog.breed = 'Labdrador'
memory.put(dog) # stores edited object back

filter objects

dog = memory.get.dog(breed='Labdrador')
assert dog.breed == 'Labrador'

Known issues

  • return class is stored(pickled) into underlying database table with reference to the module to load it back. If module name or class name is changed, membank won't always be able to load previous data as object pointer could be missing

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

membank-0.5.3.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

membank-0.5.3-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file membank-0.5.3.tar.gz.

File metadata

  • Download URL: membank-0.5.3.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for membank-0.5.3.tar.gz
Algorithm Hash digest
SHA256 3d2b10becac6d0f7aeb94177aee3c1a3b2b805fa134e6b81ba37fa7b1b6c9f8f
MD5 f234f05bfd69d003daf0be92b6beaf92
BLAKE2b-256 9aec558f97f65d597403222052e2fb53fe42b78dfcc2f9e241729b3016f12a38

See more details on using hashes here.

File details

Details for the file membank-0.5.3-py3-none-any.whl.

File metadata

  • Download URL: membank-0.5.3-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for membank-0.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e3b185c562f050a5e35239dc713fe57ead4e04adc732b499fe27e0d3d36ccc2f
MD5 ca573c4e8ff1dc380bb99273806871c3
BLAKE2b-256 e65bdc4d736a52657b99b27d54469a0c5bee0dd3845529d0a4f41ab782f6bb5b

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