Skip to main content

A high-performance, embeddable graph database with Python bindings

Project description

grafeo

Python bindings for Grafeo, a high-performance, embeddable graph database with a Rust core.

Installation

uv add grafeo
# or: pip install grafeo

Quick Start

from grafeo import GrafeoDB

# In-memory database
db = GrafeoDB()

# Or persistent
# db = GrafeoDB("./my-graph")

# Create nodes
db.execute("INSERT (:Person {name: 'Alix', age: 30})")
db.execute("INSERT (:Person {name: 'Gus', age: 25})")
db.execute("INSERT (:Person {name: 'Alix'})-[:KNOWS]->(:Person {name: 'Gus'})")

# Query the graph
result = db.execute("MATCH (p:Person) WHERE p.age > 20 RETURN p.name, p.age")
for row in result:
    print(row)

API Overview

Database

db = GrafeoDB()              # in-memory
db = GrafeoDB("./path")      # persistent
db = GrafeoDB.open("./path") # open existing

db.node_count   # number of nodes
db.edge_count   # number of edges

Query Languages

result = db.execute(gql)                        # GQL (ISO standard)
result = db.execute(gql, {"name": "Alix"})     # GQL with parameters
result = db.execute_cypher(query)               # Cypher
result = db.execute_sparql(query)               # SPARQL
result = db.execute_gremlin(query)              # Gremlin
result = db.execute_graphql(query)              # GraphQL

Node & Edge CRUD

node = db.create_node(["Person"], {"name": "Alix", "age": 30})
edge = db.create_edge(source_id, target_id, "KNOWS", {"since": 2024})

n = db.get_node(node_id)   # Node or None
e = db.get_edge(edge_id)   # Edge or None

db.set_node_property(node_id, "key", "value")
db.set_edge_property(edge_id, "key", "value")

db.delete_node(node_id)
db.delete_edge(edge_id)

Transactions

# Context manager (auto-rollback on exception)
with db.begin_transaction() as tx:
    tx.execute("INSERT (:Person {name: 'Harm'})")
    tx.commit()

# With isolation levels
from grafeo import IsolationLevel
with db.begin_transaction(IsolationLevel.SERIALIZABLE) as tx:
    tx.execute("MATCH (n:Person) SET n.verified = true")
    tx.commit()

# Per-transaction CDC override
with db.begin_transaction_with_cdc(True) as tx:
    tx.execute("INSERT (:AuditedEvent {action: 'login'})")
    tx.commit()

Named Graphs and Schemas

db.create_graph("social")
db.set_graph("social")
print(db.list_graphs())       # ['social']
print(db.current_graph())     # 'social'
db.reset_graph()
db.drop_graph("social")

db.set_schema("v1")
print(db.current_schema())    # 'v1'
db.reset_schema()

Graph Projections

db.create_projection("people", {
    "node_labels": ["Person"],
    "edge_types": ["KNOWS"]
})
print(db.list_projections())  # ['people']
db.drop_projection("people")

Data Import

count = db.import_csv("users.csv", "Person", headers=True)
count = db.import_jsonl("events.jsonl", "Event")

Backup and Restore

db.backup_full("/backups/full")
db.backup_incremental("/backups/incr")
GrafeoDB.restore_to_epoch("/backups/full", epoch=100, output_path="./restored")

QueryResult

result = db.execute("MATCH (n:Person) RETURN n.name, n.age")

result.columns          # column names
len(result)             # row count
result.execution_time   # execution time (seconds)

for row in result:      # iterate rows
    print(row)

result[0]               # access by index
result.scalar()         # first column of first row

Vector Search

# Create an HNSW index
db.create_vector_index("Document", "embedding", dimensions=384)

# Insert vectors
node = db.create_node(["Document"], {"embedding": [0.1, 0.2, ...]})

# Search
results = db.vector_search("Document", "embedding", query_vector, k=10)

Features

  • GQL, Cypher, SPARQL, Gremlin and GraphQL query languages
  • Full node/edge CRUD with native Python types
  • ACID transactions with configurable isolation levels
  • HNSW vector similarity search
  • Property indexes for fast lookups
  • Named graph and schema management
  • Graph projections (filtered virtual views)
  • CSV and JSON Lines import
  • Incremental backup and restore
  • Per-transaction CDC control
  • Async support via asyncio
  • Type stubs included

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

grafeo-0.5.38.tar.gz (2.1 MB view details)

Uploaded Source

Built Distributions

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

grafeo-0.5.38-cp312-abi3-win_amd64.whl (4.7 MB view details)

Uploaded CPython 3.12+Windows x86-64

grafeo-0.5.38-cp312-abi3-win32.whl (4.3 MB view details)

Uploaded CPython 3.12+Windows x86

grafeo-0.5.38-cp312-abi3-musllinux_1_2_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ x86-64

grafeo-0.5.38-cp312-abi3-musllinux_1_2_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

grafeo-0.5.38-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ x86-64

grafeo-0.5.38-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ ARM64

grafeo-0.5.38-cp312-abi3-macosx_11_0_arm64.whl (4.4 MB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

grafeo-0.5.38-cp312-abi3-macosx_10_12_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.12+macOS 10.12+ x86-64

File details

Details for the file grafeo-0.5.38.tar.gz.

File metadata

  • Download URL: grafeo-0.5.38.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for grafeo-0.5.38.tar.gz
Algorithm Hash digest
SHA256 e4a84deef5bbfa84306da48b07b71919b8e3b3851c029bf035b1c32c6f4d1c0c
MD5 88c2f0cb63b59e77e29da8e2b4954b62
BLAKE2b-256 6858ea775ee469324e4889bce68a74182467a8539b1f016c3563b4f79718e348

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.38.tar.gz:

Publisher: pypi.yml on GrafeoDB/grafeo

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

File details

Details for the file grafeo-0.5.38-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: grafeo-0.5.38-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 4.7 MB
  • Tags: CPython 3.12+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for grafeo-0.5.38-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 555c9f47bee38c677b2e786417039b045fd78d2c295a4e0a47d2687988693d05
MD5 832d7720027d1ae68dd721018f318313
BLAKE2b-256 3b9998ad75aeb1301877609a540549f033cd3fe42aa006a728f9abcb41698057

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.38-cp312-abi3-win_amd64.whl:

Publisher: pypi.yml on GrafeoDB/grafeo

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

File details

Details for the file grafeo-0.5.38-cp312-abi3-win32.whl.

File metadata

  • Download URL: grafeo-0.5.38-cp312-abi3-win32.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.12+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for grafeo-0.5.38-cp312-abi3-win32.whl
Algorithm Hash digest
SHA256 daa9ac8359b05955c33dfcdf8631800e852c80698156cbb6dd76cd449589ae93
MD5 6d6bc0df83e8537088e513dbb1df0696
BLAKE2b-256 b6e51dbe1d8befb8f01fb9b216b4e62226c45cdcf3f7b062a5f51e456ae62a3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.38-cp312-abi3-win32.whl:

Publisher: pypi.yml on GrafeoDB/grafeo

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

File details

Details for the file grafeo-0.5.38-cp312-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.38-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 20fce0b39eda70fcf628e4d50002aaeec0de756f1c96240b1682b7b4ec930768
MD5 b55daebfb6d3e18720308c5ca0aac19d
BLAKE2b-256 b33dfd672eda5e4ab8d599798cdc13676da3575a93159ed8a66b7a9b3be43b41

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.38-cp312-abi3-musllinux_1_2_x86_64.whl:

Publisher: pypi.yml on GrafeoDB/grafeo

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

File details

Details for the file grafeo-0.5.38-cp312-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.38-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0de6efc6d32d219393ec5b321ccd8545c54db83e36b8d0ef935a2c6f897fa088
MD5 ce823b5ca60d278549a20fb7d8d36cf7
BLAKE2b-256 1b90fabd933e64c6dfb05bb948670537797ab036dc0b341a2a7213d4542489a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.38-cp312-abi3-musllinux_1_2_aarch64.whl:

Publisher: pypi.yml on GrafeoDB/grafeo

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

File details

Details for the file grafeo-0.5.38-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.38-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 54974eedb6e34f69f1760d8c799b33718b1ce7185b8a47f3936a9426d8a21bfe
MD5 8311d9f79cf6de000e4b5b70ae951b08
BLAKE2b-256 abfd574bb51858a21c5d40768bdb7dee1cae084d279ad9f5176eb1df8735ddc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.38-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi.yml on GrafeoDB/grafeo

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

File details

Details for the file grafeo-0.5.38-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.38-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a5232e667dca790d0ad1209157b7dd7b4c18d86d42c8e3962303c46c6bdd6629
MD5 338c9d65362891ef09173d1e4b04b499
BLAKE2b-256 6391a2a1a5d6371fe675c8c87b0272d6350ef9f6c9d4f4dc726446fb100d959d

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.38-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi.yml on GrafeoDB/grafeo

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

File details

Details for the file grafeo-0.5.38-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.38-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b7b1384f251935a14a9271d5df9edef6605cdebc4169466d0f026e01c189a2b9
MD5 37c8e71bfe4d54564485259193d76f14
BLAKE2b-256 0595c96bb524089402c8e1fac913e0ff0d8857fb2b7f30f2390f4cf4a99cf823

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.38-cp312-abi3-macosx_11_0_arm64.whl:

Publisher: pypi.yml on GrafeoDB/grafeo

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

File details

Details for the file grafeo-0.5.38-cp312-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.38-cp312-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aab5f501027384e56b0a37fd35711fc599dc21cb00247372164434910902e474
MD5 d3503d3e96818da63380e4dbdfa87006
BLAKE2b-256 e86730f7a8bff130f38897ba8bfb183e4a8f3e5a7f8e1270037b188297b5fadd

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.38-cp312-abi3-macosx_10_12_x86_64.whl:

Publisher: pypi.yml on GrafeoDB/grafeo

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