Skip to main content

A lightweight, class-oriented database server with a CLI wrapper for instant querying on any device.Store, update, fetch, and remove structured data with a single command. Designed for speed and simplicity, it’s perfect for embedded systems, mobile devices, developer tools, and quick local services.

Project description

shadeDB

PyPI - Version

PyPI Downloads

Platform

License

Facebook

YouTube WhatsApp

![Instagram](https://img.shields.io/badge/Instagram-E4405F?style=flat&logo=instagram&logoColor=white)

♟️ Mission

🚀 shadeDB, also know as shadecrypt, is a lightweight, multipurpose CLI + Python database server — small enough to run anywhere, yet powerful enough to manage structured data with speed and simplicity.

Unlike traditional file-based CLIs, shadeDB works more like Redis:

  • You initialize once → a background server process holds the live database in memory.
  • All future CLI commands (put, get, update, etc.) talk to that server via a local socket.
  • The server automatically persists data to a .scdb file, with optional write and backup controls.

✨ Features

  • Class-oriented design — core database logic is in the shadeDB class.
  • Persistent workflow — one live server handles all operations.
  • Background persistence — in-memory with disk persistence.
  • Portable — runs on Linux, macOS, Windows, Android (via Termux).
  • Multipurpose CLI — simple commands: init, start, use, pull, get, update, remove, ls, stop.
  • Config-aware — automatically tracks the “current” DB in ~/.shadeDB/config.scdb.

🔧 Installation

pip install shadeDB

After install, the shadeDB command is available globally. A shorter keyword for shadeDB - scdb


⚡ Quickstart (CLI)

1. Initialize a database

Creates ./mydb.scdb, starts the server, and sets it as default:

shadeDB init ./mydb.scdb backup

⚠️ Only provide the "backup" argument if you intend for the server to register newer backups as you make new changes.

2. Start database server

This is necessary, as the cli wrapper only communicates with the database server to retrieve,update,remove and store data.

shadeDB start

3. Insert data

shadeDB update alice.age 17 && scdb update alice.gender female

4. Fetch data

shadeDB get alice
# {"nickname": "Shade", "status": "active"}

5. Nested access

shadeDB pull alice.nickname
# "Shade"

Making single value updates, it is compulsory to surround with double quotes.

6. Update

shadeDB update alice "my name is alice"

7. Remove

shadeDB remove alice 
# deletes {"nickname":"shade","status":"active"}

8. Remove nested

shadeDB remove alice.nickname
# deletes {"nickname":"shade"} 

9. Check for the current database

shadeDB ls
# ./mysql.scsb

10. Switch database

shadeDB use ./backup.scdb backup
# Only provide the backup argument, if it need arises.

11. Stop server

shadeDB stop

📚 Python API

shadeDB can also be embedded directly into Python apps using the shadeDB class.

🔧 Initialize

from shadeDB.core import shadeDB

db = shadeDB(
    file="./data.scdb",
    write=True,
    id=True,
    backup=False,
    silent=False
)

Parameters

  • file (str) → Path to .scdb file
  • write (bool) → Persist changes to disk (default: True)
  • id (bool) → Assign unique ID per entry (default: True)
  • backup (bool) → Keep backup copy (default: False)
  • silent (bool) → Whether to display a welcome message via cli on the disk's first initialisation

🛠️ Key Methods

db.update(("alice", {"nickname": "Shade", "status": "active"}))   # Insert/update
db.get("alice", multiple=True/False)      # Fetch record
db.get("alice.nickname")  # Fetch nested value
db.get_context("alice")   # Get full dict
db.get_by_id(1) # Fetch by ID
db.get_id("alice",multiple=True/False) # Get ID of key
db.items()                # List all entries
db.import_dict({...},overwrite=True/False)     # Import dictionary, can also overwrite existing records
db.export_dict()          # Export to dictionary
db.remove("alice")        # Delete entry
db.clear()                # Clear all
db.status()               # DB status
db.__performance__()      # Performance stats

⚡ Example Workflow

from shadeDB.core import shadeDB

db = shadeDB("./appdata.scdb", write=True)

# Insert
db.update(("alice", {"nickname": "Shade", "status": "active"}))

# Nested access
print(db.get("alice.nickname"))   # Shade

# Full context
print(db.get_context("alice"))    # {'nickname': 'Shade', 'status': 'active'}

# Export
print(db.export_dict())

📑 Command & Method Reference

Command / Method Description
init <file> <backup> Initialize DB + server
use <file> <backup> Switch database
pull <key>.<value> Fetch nested record
get <key> Fetch data
update <key>.<value> Update existing record
remove <key> Delete entry ( Supports dot notation)
ls Current database
stop Stop server
update(item) Insert/update via Python
get(key,multiple=True/False) Fetch record
get_context(key) Full dictionary view
get_by_id(id) Fetch by unique ID
get_id(key,multiple=True/False) Return ID of key
items() List all entries
import_dict(dict,overwrite=True/False) Import bulk dict
export_dict() Export full dict
remove(key) Delete by key/ID
clear() Wipe database
status() DB status info
__performance__() Compile time & stats

🔮 Few hints on what's to come in future updates

  • Remote mode → optional TCP listener so shadeDB can be queried from another device (like Redis-lite networking).
  • Replication/Sync → lightweight push/pull sync between devices.
  • Faster query returns → implement a new algorithm to speed up query processing.
  • Custom encryption algorithm → device based encryption algorithm.
  • Plugin system → user-defined operations via Python modules.

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

shadedb-0.2.7.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

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

shadedb-0.2.7-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file shadedb-0.2.7.tar.gz.

File metadata

  • Download URL: shadedb-0.2.7.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for shadedb-0.2.7.tar.gz
Algorithm Hash digest
SHA256 43e634e2bc3e77f3b352efe35327b38294d7e16f68c37db68568471483adb18c
MD5 e9620a346a1bf92dcee9f84d69ecc9b7
BLAKE2b-256 565fb085be3c6d91ec325a1f83d4de646b372d47762eff966e0280f6ef9c9baa

See more details on using hashes here.

File details

Details for the file shadedb-0.2.7-py3-none-any.whl.

File metadata

  • Download URL: shadedb-0.2.7-py3-none-any.whl
  • Upload date:
  • Size: 16.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for shadedb-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 c8b42c2b7937ebef3f796b55a667235d1b9d58d6d52cef1d5d8a90245f51e24f
MD5 3879413af2d3eab8358d5255bf94da8d
BLAKE2b-256 13f23274d3ec45fbc1722813cebb99a2e94c1b0fe4eaaea7ddb3557269de3e04

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