Skip to main content

OverDrive-DB — Embedded document database with ACID transactions, AES-256 encryption, WAL durability and 6 storage engines. SQLite alternative for Python.

Project description

⚡ overdrive-db

Embeddable hybrid SQL+NoSQL document database for Python
Like SQLite, but for JSON. Zero config. No server. ACID transactions.

PyPI license


Install

pip install overdrive-db

Requires the native overdrive.dll (Windows) / liboverdrive.so (Linux) / liboverdrive.dylib (macOS) in the lib/{os}-{arch}/ directory. Download from GitHub Releases.


Quick Start

from overdrive import OverdriveDb

odb = OverdriveDb.open("myapp.odb")

# Create table
odb.create_table("users")

# Insert — returns the generated _id
id = odb.insert("users", {"name": "Alice", "age": 30})

# Get by ID
doc = odb.get("users", id)
print(doc)  # {'_id': '...', 'name': 'Alice', 'age': 30}

# SQL Query
rows = odb.query("SELECT * FROM users WHERE age > 25")

# Update
odb.update("users", id, {"age": 31})

# Delete
odb.delete("users", id)

odb.close()

Context manager:

with OverdriveDb.open("myapp.odb") as odb:
    odb.create_table("users")
    id = odb.insert("users", {"name": "Bob"})
    print(odb.get("users", id))

API Reference

Open / Close

odb = OverdriveDb.open(path)                         # plain open
odb = OverdriveDb.open(path, password="secret")      # encrypted
odb = OverdriveDb.open(path, engine="RAM")           # in-memory

odb.sync()   # flush to disk
odb.close()  # release handle

OverdriveDb.version()  # native library version string

Tables

odb.create_table("users")
odb.drop_table("users")
odb.list_tables()          # → ['users', 'products', ...]
odb.table_exists("users")  # → True / False

CRUD

Method Returns Description
odb.insert(table, doc) str (_id) Insert a document
odb.insert_many(table, docs) list[str] Insert multiple documents
odb.get(table, id) dict | None Get document by _id
odb.update(table, id, patch) bool Update document by _id
odb.delete(table, id) bool Delete document by _id
odb.count(table) int Count documents in table

Query

# SQL query — returns list of dicts
rows = odb.query("SELECT * FROM users ORDER BY age DESC LIMIT 10")

# Full-text search
results = odb.search("users", "Alice")

Transactions

from overdrive import IsolationLevel

# Callback style (auto-commit / auto-abort)
def transfer(odb):
    odb.insert("logs", {"event": "login"})

odb.transaction(transfer, IsolationLevel.SERIALIZABLE)

# Manual style
txn = odb.begin_transaction(IsolationLevel.READ_COMMITTED)
try:
    odb.insert("logs", {"event": "login"})
    odb.commit_transaction(txn)
except Exception:
    odb.abort_transaction(txn)
    raise

Isolation Levels:

Name Value
IsolationLevel.READ_UNCOMMITTED 0
IsolationLevel.READ_COMMITTED 1 (default)
IsolationLevel.REPEATABLE_READ 2
IsolationLevel.SERIALIZABLE 3

Integrity Check

report = odb.verify_integrity()
print(report)  # {'status': 'ok', ...}

6 Storage Engines

odb = OverdriveDb.open("app.odb")                            # Disk (default)
odb = OverdriveDb.open("cache.odb", engine="RAM")            # in-memory
odb = OverdriveDb.open("vecs.odb", engine="Vector")          # embeddings
odb = OverdriveDb.open("ts.odb", engine="Time-Series")       # metrics/IoT
odb = OverdriveDb.open("g.odb", engine="Graph")              # social graphs
odb = OverdriveDb.open("q.odb", engine="Streaming")          # event queue

More SDKs

pip install overdrive-db          # Python  ← you are here
npm install overdrive-db          # Node.js
cargo add overdrive-db            # Rust
go get github.com/ALL-FOR-ONE-TECH/overdrive-db-go@v1.0.0

Links

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

overdrive_db-2.4.5.tar.gz (8.0 MB view details)

Uploaded Source

Built Distribution

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

overdrive_db-2.4.5-py3-none-any.whl (8.0 MB view details)

Uploaded Python 3

File details

Details for the file overdrive_db-2.4.5.tar.gz.

File metadata

  • Download URL: overdrive_db-2.4.5.tar.gz
  • Upload date:
  • Size: 8.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for overdrive_db-2.4.5.tar.gz
Algorithm Hash digest
SHA256 7c453ac44c3f95cf75f4131fdda29997de6eabdf8ced0edfb78f000f57c9bb2b
MD5 8ae0a2d1de943833ee77e4128a6fe467
BLAKE2b-256 491b28f03c41a514eb1b302a4483705d021ef58755ee1b2ca577b2d4f502a756

See more details on using hashes here.

File details

Details for the file overdrive_db-2.4.5-py3-none-any.whl.

File metadata

  • Download URL: overdrive_db-2.4.5-py3-none-any.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for overdrive_db-2.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 da79adb0556cb1d0a4e7cd0dff7eae3fb1519b829ed7adbebcab144b53fd71c6
MD5 a5b566499f1a982d0d99ac123f65ed76
BLAKE2b-256 9f72a391e0f023fa15aa880ab3153a9af871a3ab9299c0ee4a3853ee440bc14c

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