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.
Install
pip install overdrive-db
Requires the native
overdrive.dll(Windows) /liboverdrive.so(Linux) /liboverdrive.dylib(macOS) in thelib/{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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file overdrive_db-2.4.2.tar.gz.
File metadata
- Download URL: overdrive_db-2.4.2.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04ce28b74cf80f71500d5349ca5a98144759a6daab7208deea4951cd2ab39a23
|
|
| MD5 |
037cab7ce4b07900eb24fffd386bad7a
|
|
| BLAKE2b-256 |
eeb53532ec69b3deab86aea28925fdcf1fa7cd6d471bba144f0e9c45233626fd
|
File details
Details for the file overdrive_db-2.4.2-py3-none-any.whl.
File metadata
- Download URL: overdrive_db-2.4.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd1ecf23988b61799b52004de997c37c6b59acdc221a56514909d159c24ab83c
|
|
| MD5 |
88c1827d7f7de04e45f9acaa155e60e4
|
|
| BLAKE2b-256 |
80e750f51396e4cc65a725e21e629b08d540cfbd4edd95e6cbb606e2c068b24c
|