Skip to main content

Persistent and portable serialized data store.

Project description

pyDataStore

Persistent and portable serialized data store.

A Python dict object that has been dump-ed can be load-ed or retrieved in the future.

To secure the data, it is using the base64 package when encoding it in Base64, which is the default encoding, and pycryptodome package when encoding it in AES. Then, pickle to serialize the dict object.

Requirements

This requires Python >=3.5, <3.10.

Python Packages

Installation

Install the package through PyPI:

pip install pyDataStore

Usage

As this will be using Python 3, we have to set the shebang to the appropriate executable.

#!/usr/bin/env python3

To use pyDataStore, we have to import it first.

from pyDataStore import Cipher, DataStore

Then, we can use this sample dict object.

# Sample dict object.
objDict = {"object": "test_datastore", "data": {"user": "dummy-user", "pass": "123qwe456asd789zxc"}}

There is a required format for the dict object.

{
    "object": "OBJECT_NAME",
    "data": {
        "DATA_KEY": "DATA_VALUE",
        "DATA_KEY": "DATA_VALUE",
        ...
    }
}

Otherwise, this will throw an Exception.

Exception: This dict object has an invalid format.

Base64 Encoding

  • Using the default data store file.

    print(f"Raw: {objDict}")
    
    # Create an instance that will store the data in a file named data.store (default).
    # Default encoding is set to Base64.
    ds64 = pyDataStore()
    
    # This is the same as the above.
    # ds64 = pyDataStore(fileDataStore="data.store", cipher=Cipher.Base64)
    
    # Dump or store the dictionary object.
    ds64.dump(objDict)
    
    # At this point, the objDict dict object is already encoded.
    
    # Based64 Encoded.
    print(f"Base64: {objDict}")
    
    # Retrieve the stored encoded dict object.
    data64 = ds64.load("test_datastore")
    
    print(f"Decoded: {data64}")
    

AES Encoding

  • Using a custom data store file.

    print(f"Raw: {objDict}")
    
    # Create an instance that will store the data in a file named aes.store.
    # Encoding is set to AES.
    dsAES = pyDataStore(fileDataStore="aes.store", cipher=Cipher.AES, aesKey="SPECIFY_AN_AES_KEY_HERE")
    
    # Dump or store the dictionary object.
    dsAES.dump(objDict)
    
    # At this point, the objDict dict object is already encoded.
    
    # AES Encoded.
    print(f"AES: {objDict}")
    
    # Retrieve the stored encoded dict object.
    dataAES = dsAES.load("test_datastore")
    
    print(f"Decoded: {dataAES}")
    

Contribute

Community contributions are encouraged! Feel free to report bugs and feature requests to the issue tracker provided by GitHub.

License

pyDataStore is an Open-Source Software (OSS) and is available for use under the GNU GPL v3 license.

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

pyDataStore-1.0.6.tar.gz (18.4 kB view hashes)

Uploaded Source

Built Distribution

pyDataStore-1.0.6-py3-none-any.whl (17.9 kB view hashes)

Uploaded Python 3

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