/rocksdb3

Python bindings for rocksdb

Primary LanguagePythonApache License 2.0Apache-2.0

Python bindings for rocksdb

Rocksdb3 is a python bindings for rocksdb based on rust wrapper rust-rocksdb and PyO3.

This is a very early proof-of-concept version. Please do not use it in production.

Actions Status Latest version Support python versions License

Why new wrapper

There is already have python-rocksdb, so why create a new wrapper for rocksdb?

  • It's fun
  • I'm learning Rust, this is my exprience
  • PyO3 is fun, too
  • Python-rocksdb is not actively maintained
  • Python-rocksdb is not released with statically-linked multiple-operating-system-supported wheel binaries
  • Debugging out-of-bounds pointers is boring

Status

  • precompiled wheel binaries for Linux, Windows, macOS, on python 3.5, 3.6, 3.7, 3.8, 3.9, 3.10
  • basic open/put/get/delete/close
  • open as secondary instance
  • destroy/repair
  • iterator
    • iterator with specific prefix
  • write batch
  • options
    • open options
    • read options
    • write options

Install

pip install rocksdb3

Examples

import rocksdb3

path = './db_path'
db = rocksdb3.open_default(path)
assert db.get(b'my key') is None
db.put(b'my key', b'my value')
assert db.get(b'my key') == b'my value'
assert list(db.get_iter()) == [(b'my key', b'my value')]
db.delete(b'my key')
assert db.get(b'my key') is None
del db  # auto close db
rocksdb3.destroy(path)

build

pip install maturin
maturin build