Skip to main content

Python bindings for Uni Graph Database (default — all 11 providers, CPU)

Project description

uni-db: Python Bindings for Uni Graph Database

PyPI License

Python bindings for the Uni embedded graph database.

Part of The Rustic Initiative by Dragonscale Industries Inc.

Installation

pip install uni-db

Quick Start

import uni_db

# Open or create a database
db = uni_db.Database("./my_graph")

# Define schema
db.create_label("Person")
db.add_property("Person", "name", "string", False)
db.add_property("Person", "age", "int64", True)
db.create_scalar_index("Person", "name", "btree")

# Write data
db.execute("CREATE (p:Person {name: 'Alice', age: 30})")
db.execute("CREATE (p:Person {name: 'Bob', age: 25})")
db.flush()

# Query
results = db.query(
    "MATCH (p:Person) WHERE p.age > $min RETURN p.name",
    {"min": 28},
)
print(results)  # [{'p.name': 'Alice'}]

Schema Operations

# Labels and edge types
db.create_label("Person")
db.create_edge_type("KNOWS", ["Person"], ["Person"])
db.add_property("Person", "name", "string", False)   # nullable=False
db.add_property("Person", "age",  "int64",  True)    # nullable=True

# Indexes
db.create_scalar_index("Person", "name", "btree")
db.create_vector_index("Person", "embedding", "cosine")  # or "l2"

# Introspection
db.list_labels()         # ['Person', ...]
db.list_edge_types()     # ['KNOWS', ...]
db.get_label_info("Person")
db.get_schema()

Transactions

txn = db.begin()
txn.execute("CREATE (p:Person {name: 'Charlie'})")
txn.commit()   # or txn.rollback()

Bulk Loading

writer = db.bulk_writer()
writer.insert_vertices("Person", [
    {"name": "Alice", "age": 30},
    {"name": "Bob",   "age": 25},
])
writer.insert_edges("KNOWS", [
    (person_vids[0], person_vids[1], {}),   # (src_vid, dst_vid, properties)
])
writer.commit()

Vector Search

# Create a vector index
db.create_label("Document")
db.add_property("Document", "text",      "string",     False)
db.add_property("Document", "embedding", "vector[128]", True)
db.create_vector_index("Document", "embedding", "cosine")

db.execute("CREATE (d:Document {text: 'hello world', embedding: [0.1, 0.2, 0.3]})")
db.flush()

# K-NN search
results = db.query("""
    CALL uni.vector.query('Document', 'embedding', $vec, 10)
    YIELD vid, distance
    RETURN vid, distance
    ORDER BY distance
""", {"vec": my_embedding})

# K-NN with pre-filter (SQL WHERE expression)
results = db.query("""
    CALL uni.vector.query('Document', 'embedding', $vec, 10, 'category = "tech"')
    YIELD vid, distance
    RETURN vid, distance
""", {"vec": my_embedding})

# K-NN with distance threshold
results = db.query("""
    CALL uni.vector.query('Document', 'embedding', $vec, 10, NULL, 0.5)
    YIELD vid, distance
    RETURN vid, distance
""", {"vec": my_embedding})

YIELD columns: vid (integer vertex ID), distance (float).

Async API

import uni_db

# Open
db = await uni_db.AsyncDatabase.open("./my_graph")
# or: db = await uni_db.AsyncDatabase.temporary()

await db.execute("CREATE (p:Person {name: 'Alice', age: 30})")
results = await db.query("MATCH (p:Person) RETURN p.name")
await db.flush()

Forks

Named, durable, isolated branches of the graph. A fork lets a session reason about an alternate version of the database — what-if analysis, audit hold, scenario sandboxing — that survives across restarts.

import uni_db
from datetime import timedelta

db = uni_db.Uni.builder().build()
db.schema().label("Person").property("name", "string").apply()

primary = db.session()

# Open or create a fork (Phase 2: writable; Phase 3: nestable;
# Phase 4a: TTL + tags + budget).
fork = primary.fork("scenario_1").ttl(timedelta(hours=1)).build()
tx = fork.tx()
tx.execute("CREATE (:Person {name: 'fork-only'})")
tx.commit()

# Fork sees primary state + its own writes; primary unchanged.
print(fork.query("MATCH (p:Person) RETURN count(p) AS n"))

# Pin a Lance tag for audit retention; the tag survives the drop.
db.tag_fork("scenario_1", "audit-2026-q1")
del fork
db.drop_fork("scenario_1")
print(db.list_fork_tags("scenario_1"))  # tag still resolvable

The async surface mirrors this exactly through AsyncUni / AsyncSession. See examples/fork_quickstart.py and examples/fork_audit.py for runnable demos, and the full Python API reference for every method, type, and error variant.

Query Utilities

# Parameterized queries
results = db.query(
    "MATCH (p:Person) WHERE p.name = $name RETURN p",
    {"name": "Alice"},
)

# Explain / profile
plan    = db.explain("MATCH (p:Person) RETURN p")
results, stats = db.profile("MATCH (p:Person) RETURN p")

Development

git clone https://github.com/rustic-ai/uni-db
cd uni-db/bindings/uni-db
uv sync --group dev
uv run maturin develop   # builds and installs the extension module
uv run pytest            # run tests

Links

License

Apache 2.0

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

uni_db-2.4.1.tar.gz (4.5 MB view details)

Uploaded Source

Built Distributions

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

uni_db-2.4.1-cp310-abi3-win_amd64.whl (144.7 MB view details)

Uploaded CPython 3.10+Windows x86-64

uni_db-2.4.1-cp310-abi3-manylinux_2_28_x86_64.whl (165.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

uni_db-2.4.1-cp310-abi3-manylinux_2_28_aarch64.whl (167.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

uni_db-2.4.1-cp310-abi3-macosx_11_0_arm64.whl (146.1 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file uni_db-2.4.1.tar.gz.

File metadata

  • Download URL: uni_db-2.4.1.tar.gz
  • Upload date:
  • Size: 4.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uni_db-2.4.1.tar.gz
Algorithm Hash digest
SHA256 1a8c6ef3c73c1d258c0419e056793c8191bfb225b340e90c35a69c674c50e3ca
MD5 da72ef7deca47439a7e5e99ca49d781d
BLAKE2b-256 b900efe99cb289363f1bd517ee37582e2960323bfcc52171d87689b52afa8ac3

See more details on using hashes here.

File details

Details for the file uni_db-2.4.1-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: uni_db-2.4.1-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 144.7 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uni_db-2.4.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 3d93519712c46b32d1f53890044e38e7c2c92a82ea54e8ef4fe81abfd1d1c9a8
MD5 23bb2e91579555840e4bf4a76dc4828c
BLAKE2b-256 7e2367b36cf65f3996961472ba16fa4c54c14f6097a3bde32e7d93879e60c4df

See more details on using hashes here.

File details

Details for the file uni_db-2.4.1-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: uni_db-2.4.1-cp310-abi3-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 165.5 MB
  • Tags: CPython 3.10+, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uni_db-2.4.1-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bff35fdbcc3330b9f74d79b1d116a25dd1cbe135f1420ec41f0d7e48a8b4399d
MD5 961d0f08b37b5dd64d64ea35646a9f2e
BLAKE2b-256 a812f1db81db5ff4a47943e7984e186a8673695c2f07615269d1fb94e14734b5

See more details on using hashes here.

File details

Details for the file uni_db-2.4.1-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: uni_db-2.4.1-cp310-abi3-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 167.2 MB
  • Tags: CPython 3.10+, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uni_db-2.4.1-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 36410dbc9293309eef1132034ab1af6bd86fa4c9012f650efb8ae519471eda66
MD5 6da8d4d5206b5c0554e6411aebd07d35
BLAKE2b-256 3cc43450c524dd93c46271bbd333052b400087c0c9b5083a4954f592d3c1cf1a

See more details on using hashes here.

File details

Details for the file uni_db-2.4.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: uni_db-2.4.1-cp310-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 146.1 MB
  • Tags: CPython 3.10+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uni_db-2.4.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f001cddd9b41472f853f763e05391294a6313ceb405e6e0d28c9c2ddbef84af6
MD5 fdc297f2d585bea83b55f3ba778018fb
BLAKE2b-256 30e57bce09d57c1b02314eeb6ac3a4c0442fc3502e32b222aad167ea8e9987c0

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