Skip to main content

Pure Python TCP driver for RocheDB

Project description

RocheDB Python Driver

Pure Python TCP driver for RocheDB.

This driver talks to roched over RocheDB's high-level wire protocol. It does not reimplement RocheDB's ring-key, period, head-angle, or placement rules. Applications pass a human-readable ring name, and RocheDB returns a typed ID.

Status

  • package: PyPI rochedb v0.1.2
  • current mode: native TCP wire driver
  • Python: 3.10+
  • runtime dependencies: none
  • RocheDB core: running roched node or cluster

Implemented:

  • persistent TCP connections
  • wire_version / health
  • put / put_json
  • get / get_text / get_json
  • query / query_text / query_json
  • batch_get
  • typed RocheId
  • one reconnect retry
  • context manager support

Planned:

  • authentication / secret-key handshake support
  • retrieve / atlas wire APIs once the public wire contract is finalized for drivers
  • connection pooling

Install

Install the published package from PyPI:

python3 -m pip install rochedb

For local driver development, install from a checkout:

python3 -m pip install -e .

Build roched from the RocheDB core repository:

git clone https://github.com/puffball1567/rochedb.git
cd rochedb
nimble install -y
nim c -d:release --nimcache:/tmp/nimcache_roched -o:src/roched src/roched.nim

Example

from rochedb import RocheClient

with RocheClient.connect("127.0.0.1:17301") as db:
    doc_id = db.put_json(
        "docs/japan/support",
        {"title": "Tokyo support note", "country": "JP"},
        vector=[1.0, 0.0],
    )

    print(db.get_json(doc_id))
    print(db.query_json(doc_id, "{ title }"))

Test

From this driver repository, point ROCHEDB_CORE_DIR at a RocheDB checkout:

ROCHEDB_CORE_DIR=/path/to/rochedb python3 -m unittest discover -s tests

The test starts a two-node local roched cluster and verifies put/get/query, JSON helpers, wire_version, and batch_get.

Why A Native Wire Driver?

The Python driver is intended for API services, scripts, experiments, and AI/RAG validation where a running RocheDB server or cluster is the natural boundary. It keeps Python out of RocheDB's placement internals and uses the same ring-oriented API that other external drivers should use.

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

rochedb-0.1.2.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

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

rochedb-0.1.2-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file rochedb-0.1.2.tar.gz.

File metadata

  • Download URL: rochedb-0.1.2.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for rochedb-0.1.2.tar.gz
Algorithm Hash digest
SHA256 cfdb6048e244a1dd166a23bf69b16565a6365419bfb6e23678417649f5dccc12
MD5 dbabb0dc3e84a78864633f1f10cb73b9
BLAKE2b-256 c220f09f624f82dfe3b1a17645dd72e0d2ce3e79131524780758b467e491d4b0

See more details on using hashes here.

File details

Details for the file rochedb-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: rochedb-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for rochedb-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 21193f41b4aae3788ed8dd42bbad503aae5759bab2138dac9a32f8e8f158e8e0
MD5 9b6646a5acbc6b586f0fd73fb9e6fd3b
BLAKE2b-256 509041facd21272be39fd52204d188d5de98978ebbe9ab86d338be72df95bc34

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