membank


Namemembank JSON
Version 0.5.3 PyPI version JSON
download
home_pagehttps://github.com/Kolumbs/membank
SummaryA library to handle persistent memory
upload_time2024-09-06 09:26:29
maintainerNone
docs_urlNone
authorJuris Kaminskis
requires_python>=3.10
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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
```python
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
```python
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
```python
dog = memory.get.dog()
dog.breed = 'Labdrador'
memory.put(dog) # stores edited object back
```
### filter objects
```python
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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Kolumbs/membank",
    "name": "membank",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": null,
    "author": "Juris Kaminskis",
    "author_email": "juris@kolumbs.net",
    "download_url": "https://files.pythonhosted.org/packages/9a/ec/558f97f65d597403222052e2fb53fe42b78dfcc2f9e241729b3016f12a38/membank-0.5.3.tar.gz",
    "platform": null,
    "description": "# membank\nPython library for storing data in persistent memory (sqlite, postgresql, berkeley db)\n## goals\nProvide interface to database storage that automates heavy lifting of database setup, migration, table definition, query construction.\n## quick intro\n### add items to persistent storage\n```python\nimport dataclasses as data # Python standard library\n\nfrom membank import LoadMemory\n\n@data.dataclass\nclass Dog():\n    breed: str\n    color: str = \"black\"\n    weight: float = 0\n    data: dict = data.field(default_factory=dict)\n    picture: bytes = b''\n    aliases: list = data.field(default_factory=list)\n\n@data.dataclass\nclass DogWithID():\n    id: str = data.field(default=None, metadata={\"key\": True})\n    breed: str\n    color: str = \"black\"\n    weight: float = 0\n    data: dict = data.field(default_factory=dict)\n    picture: bytes = b''\n    alive: bool = True\n\nmemory = LoadMemory() # defaults to sqlite memory\nmemory.put(Dog('Puli')) # stores object into database\ndog = memory.get.dog() # retrieves first object found\nassert dog.breed == 'Puli'\ndog.color = \"white\"\nmemory.put(dog) # be carefull you store another dog\ndog = memory.put(DogWithID(\"AB1234\", \"Puli\"))\ndog = memory.get.dogwithid(id=\"AB1234\")\ndog.color = \"white\"\nmemory.put(dog) # now you update existing dog\n\n```\n### retrieve those after\n```python\nmemory = LoadMemory() # to make this work in new process, don't use sqlite memory\ndog = memory.get.dog() # get first found or None\nassert dog.color == 'black'\ndogs = memory.get(\"dog\") # always returns list (empty or with items)\nassert len(dogs) >= 0\n```\n### editing returned objects\n```python\ndog = memory.get.dog()\ndog.breed = 'Labdrador'\nmemory.put(dog) # stores edited object back\n```\n### filter objects\n```python\ndog = memory.get.dog(breed='Labdrador')\nassert dog.breed == 'Labrador'\n```\n## Known issues\n - 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\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A library to handle persistent memory",
    "version": "0.5.3",
    "project_urls": {
        "Bug Tracker": "https://github.com/Kolumbs/membank/issues",
        "Homepage": "https://github.com/Kolumbs/membank"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e65bdc4d736a52657b99b27d54469a0c5bee0dd3845529d0a4f41ab782f6bb5b",
                "md5": "ca573c4e8ff1dc380bb99273806871c3",
                "sha256": "e3b185c562f050a5e35239dc713fe57ead4e04adc732b499fe27e0d3d36ccc2f"
            },
            "downloads": -1,
            "filename": "membank-0.5.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ca573c4e8ff1dc380bb99273806871c3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 10247,
            "upload_time": "2024-09-06T09:26:27",
            "upload_time_iso_8601": "2024-09-06T09:26:27.375162Z",
            "url": "https://files.pythonhosted.org/packages/e6/5b/dc4d736a52657b99b27d54469a0c5bee0dd3845529d0a4f41ab782f6bb5b/membank-0.5.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9aec558f97f65d597403222052e2fb53fe42b78dfcc2f9e241729b3016f12a38",
                "md5": "f234f05bfd69d003daf0be92b6beaf92",
                "sha256": "3d2b10becac6d0f7aeb94177aee3c1a3b2b805fa134e6b81ba37fa7b1b6c9f8f"
            },
            "downloads": -1,
            "filename": "membank-0.5.3.tar.gz",
            "has_sig": false,
            "md5_digest": "f234f05bfd69d003daf0be92b6beaf92",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 13383,
            "upload_time": "2024-09-06T09:26:29",
            "upload_time_iso_8601": "2024-09-06T09:26:29.063011Z",
            "url": "https://files.pythonhosted.org/packages/9a/ec/558f97f65d597403222052e2fb53fe42b78dfcc2f9e241729b3016f12a38/membank-0.5.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-06 09:26:29",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Kolumbs",
    "github_project": "membank",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "tox": true,
    "lcname": "membank"
}
        
Elapsed time: 0.33421s