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.4.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.4-py3-none-any.whl (8.0 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: overdrive_db-2.4.4.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.4.tar.gz
Algorithm Hash digest
SHA256 9ba1cbbc9106a3ca544ae5ca8ae6f3b2f3f314aa105f6db4d846ccca8d82d8be
MD5 91bc41e2f5fae554b41ad52fd228e0de
BLAKE2b-256 d1aa752c37280859f94cad309a17abf0371d6b0746ec76f2bd455617b2682843

See more details on using hashes here.

File details

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

File metadata

  • Download URL: overdrive_db-2.4.4-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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0e634f8a2bbb6b9f8b6b5c17abdc0a741c8186de626d124541c55698ae833569
MD5 a4b5785d0c5889a5c01d693f9369ecba
BLAKE2b-256 25213dbbdbbcaf2a49111eda9e185a1961e20bbcb7d74f5bc95f760839fe0a26

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