Skip to main content

Python client & server manager for Titan Distributed SQLite

Project description

Titan DB — Python Client

Zero-setup distributed SQLite. Install with pip, start a fault-tolerant cluster with one command.

Install

pip install titan-db

Start the Server (One Command!)

titan-server start

This automatically:

  1. Downloads the correct titan-node binary for your OS (Windows/Mac/Linux)
  2. Starts a 3-node distributed cluster on localhost
  3. Prints the connection URLs

To stop the cluster:

titan-server stop

To check health:

titan-server status

Use the Client

from titan_db import TitanClient

# Connect to the cluster
db = TitanClient([
    "http://127.0.0.1:8001",
    "http://127.0.0.1:8002",
    "http://127.0.0.1:8003",
])

# Write — automatically finds and routes to the Leader node
db.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)")
db.execute("INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')")

# Read — queries any reachable node
rows = db.query("SELECT * FROM users")
print(rows)
# [{'id': '1', 'name': 'Alice', 'email': 'alice@example.com'}]

# Transactions — multiple statements, atomic
db.transaction([
    "INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com')",
    "INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@example.com')",
])

# Cluster health
print(db.status())
print(db.leader())

Start the Server from Python

You can also manage the cluster programmatically:

from titan_db.server import TitanServer
from titan_db import TitanClient

# Use as a context manager — auto starts and stops
with TitanServer() as server:
    db = TitanClient(server.node_urls())
    db.execute("CREATE TABLE test (id INTEGER PRIMARY KEY, value TEXT)")
    db.execute("INSERT INTO test (value) VALUES ('hello distributed world!')")
    print(db.query("SELECT * FROM test"))
# Cluster automatically stops when the block exits

Authentication

If the server is started with TITAN_API_KEY, pass it to the client:

db = TitanClient(
    nodes=["http://127.0.0.1:8001", "http://127.0.0.1:8002", "http://127.0.0.1:8003"],
    api_key="my_secret_key"
)

API Reference

Method Description
execute(sql) Write SQL — auto-routes to Leader via Raft
query(sql) Read SQL — returns list of dicts
transaction([...]) Atomic multi-statement transaction
status() All nodes health
leader() Current leader info

CLI Reference

Command Description
titan-server start Download binary + start 3-node cluster
titan-server stop Stop all running nodes
titan-server status Check cluster health
titan-server download Just download the binary (no start)

Troubleshooting

Error Cause Fix
No Titan nodes are reachable Cluster not running Run titan-server start
Nodes reachable but no Leader Election in progress Wait 1-2 seconds, retry
Binary not found for your platform No pre-built binary Build from source (see error message)
Unauthorized API key required Pass api_key= to TitanClient

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

titan_db-0.2.1.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

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

titan_db-0.2.1-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file titan_db-0.2.1.tar.gz.

File metadata

  • Download URL: titan_db-0.2.1.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for titan_db-0.2.1.tar.gz
Algorithm Hash digest
SHA256 64c0a87e6302f78dac1de928817f16d99c3309fe327fa2ab368c5baed7eabbde
MD5 f090a8c5ff67a1eb744ec9cad67ab210
BLAKE2b-256 0c1a5ca1d4c454df28010c5a79c77374889f9411cc277cd893b5bc9c25c39140

See more details on using hashes here.

Provenance

The following attestation bundles were made for titan_db-0.2.1.tar.gz:

Publisher: pypi-publish.yml on Yogendra-sodha/titan-distributed-sqlite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file titan_db-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: titan_db-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for titan_db-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8d8477524a3fd3cb89f96312649c5fe6493b69fb296ddbfae9e249af958e2fc7
MD5 13edf6b2155010d388e242d39b93704e
BLAKE2b-256 1147d61b5cddf22d47b94eb10378288c25603edc701cd08439c2e97a7765bdea

See more details on using hashes here.

Provenance

The following attestation bundles were made for titan_db-0.2.1-py3-none-any.whl:

Publisher: pypi-publish.yml on Yogendra-sodha/titan-distributed-sqlite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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