Skip to main content

Propulsing the shelve module to the cloud

Project description

Cloud Shelve

Cloud Shelve (cshelve) is a Python package that provides a seamless way to store and manage data in the cloud using the familiar Python Shelve interface. It is designed for efficient and scalable storage solutions, allowing you to leverage cloud providers for persistent storage while keeping the simplicity of the shelve API.

Features

  • Supports large file storage in the cloud
  • Secure data in-transit encryption when using cloud storage
  • Fully compatible with Python's shelve API
  • Cross-platform compatibility for local and remote storage

Installation

Install cshelve via pip:

pip install cshelve

Usage

The cshelve module strictly follows the official shelve API. Consequently, you can refer to the Python official documentation for general usage examples. Simply replace the shelve import with cshelve, and you're good to go.

Local Storage

Here is an example, adapted from the official shelve documentation, demonstrating local storage usage. Just replace shelve with cshelve:

import cshelve

d = cshelve.open('local.db')  # Open the local database file

key = 'key'
data = 'data'

d[key] = data                 # Store data at the key (overwrites existing data)
data = d[key]                 # Retrieve a copy of data (raises KeyError if not found)
del d[key]                    # Delete data at the key (raises KeyError if not found)

flag = key in d               # Check if the key exists in the database
klist = list(d.keys())        # List all existing keys (could be slow for large datasets)

# Note: Since writeback=True is not used, handle data carefully:
# The writeback functionality is not yet supported in cshelve.
d['xx'] = [0, 1, 2]           # Store a list
d['xx'].append(3)             # This won't persist since writeback=True is not used

# Correct approach:
temp = d['xx']                # Extract the stored list
temp.append(5)                # Modify the list
d['xx'] = temp                # Store it back to persist changes

d.close()                     # Close the database

Remote Storage (e.g., Azure)

To configure remote cloud storage, you need to provide an INI file containing your cloud provider's configuration. The file should have a .ini extension.

Example Azure Configuration

$ cat azure.ini
[default]
provider        = azure
account_url     = https://myaccount.blob.core.windows.net
auth_type       = passwordless
container_name  = mycontainer

Once the INI file is ready, you can interact with remote storage the same way as with local storage. Here's an example using Azure:

import cshelve

d = cshelve.open('azure.ini')  # Open using the remote storage configuration

key = 'key'
data = 'data'

d[key] = data                  # Store data at the key
data = d[key]                  # Retrieve the data
del d[key]                     # Delete the data

flag = key in d                # Check if the key exists in the cloud store
klist = list(d.keys())         # List all keys in the remote storage

# Note: Writeback functionality is not yet supported.
d['xx'] = [0, 1, 2]            # Store a list remotely
d['xx'].append(3)              # Changes to the list won't persist

# Correct approach:
temp = d['xx']                 # Extract the stored list
temp.append(5)                 # Modify the list
d['xx'] = temp                 # Store it back to persist changes

d.close()                      # Close the connection to the remote store

More configuration examples for other cloud providers can be found here.

Supported Cloud Providers

  • Azure Blob Storage (as of the current version)
  • Support for AWS S3 and Google Cloud Storage is planned (see Roadmap)

Roadmap

  • Support for writeback=True: This feature allows data to be cached in memory, then written back to the storage only upon closing.
  • AWS S3 Support: Integration for AWS S3 storage is planned in upcoming versions.
  • Google Cloud Storage Support: Support for Google Cloud Storage is also on the roadmap.

Stay tuned for updates!

Contributing

We welcome contributions from the community! If you'd like to contribute, please read our contributing guidelines for more details on how to get started.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Contact

If you have any questions, issues, or feedback, feel free to [open an issue]https://github.com/Standard-Cloud/cshelve/issues).

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

cshelve-0.1.0.dev0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cshelve-0.1.0.dev0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file cshelve-0.1.0.dev0.tar.gz.

File metadata

  • Download URL: cshelve-0.1.0.dev0.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.4.20

File hashes

Hashes for cshelve-0.1.0.dev0.tar.gz
Algorithm Hash digest
SHA256 e34dd228c25875d5c9ea2188f264116a5098761a2b5fdfde26b461e6fa2539b1
MD5 078ddca03f51aacf5d6fb73ee38959ad
BLAKE2b-256 d31eae3671b420d1cd23d13c77f7d3feadfdc9de65316b768bb882f596f71a55

See more details on using hashes here.

File details

Details for the file cshelve-0.1.0.dev0-py3-none-any.whl.

File metadata

File hashes

Hashes for cshelve-0.1.0.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 9b7b05d2420f4bfd47b0be20f6ff47e1c6f0e48ba5b436a728296732eb0cd770
MD5 dd8bb4fff0b882b356e320ad4b8a8380
BLAKE2b-256 351cf8662b911030f15951027052bd8946d7c24f43417977a8568a42bdcb5629

See more details on using hashes here.

Supported by

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