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
result = db.execute_sql(query)                  # SQL/PGQ (SQL:2023)

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 (string or enum)
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_ms  # execution time (milliseconds)

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, GraphQL, and SQL/PGQ 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.39.tar.gz (2.2 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.39-cp312-abi3-win_amd64.whl (4.9 MB view details)

Uploaded CPython 3.12+Windows x86-64

grafeo-0.5.39-cp312-abi3-win32.whl (4.5 MB view details)

Uploaded CPython 3.12+Windows x86

grafeo-0.5.39-cp312-abi3-musllinux_1_2_x86_64.whl (5.3 MB view details)

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

grafeo-0.5.39-cp312-abi3-musllinux_1_2_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

grafeo-0.5.39-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB view details)

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

grafeo-0.5.39-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ ARM64

grafeo-0.5.39-cp312-abi3-macosx_11_0_arm64.whl (4.6 MB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

grafeo-0.5.39-cp312-abi3-macosx_10_12_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.12+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: grafeo-0.5.39.tar.gz
  • Upload date:
  • Size: 2.2 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.39.tar.gz
Algorithm Hash digest
SHA256 985439d7986164b5272464fbd31c59f24596df35fd792edf25083fbdbe39e809
MD5 77dc7e1aa7c190ef701b339ca6f9ffbf
BLAKE2b-256 02150849cfb2983deb338988796f655663ebf9d8819f4b402cf41d8c904e4a23

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.39.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.39-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: grafeo-0.5.39-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 4.9 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.39-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 443b27f62c362c27859013fcdad366f4a5836f95909c0449043d6e4bd3fc1d09
MD5 ea5b753fbfea09587b6f410d14198f74
BLAKE2b-256 d583f81db4d96453db55ea2ce0185eeb86d0184874beb26c7389109644e542f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.39-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.39-cp312-abi3-win32.whl.

File metadata

  • Download URL: grafeo-0.5.39-cp312-abi3-win32.whl
  • Upload date:
  • Size: 4.5 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.39-cp312-abi3-win32.whl
Algorithm Hash digest
SHA256 8eb3cd9044f9c78538fa991bd9296eb68a9124ae1ae1bdb35f4e4eeef2a506e0
MD5 ceb6eda04c2df2eaa2a08a5dce497bf4
BLAKE2b-256 756060b2561375a06dd2ccb8b53199088cb4c0fd75a31970781ef7c64c3511e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.39-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.39-cp312-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.39-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5624a5b659d3b70f91c52e49f481a718407e42835bbb0ec61056292e0fd236e5
MD5 b2dd89584cc6f155ea9c92bff63f6660
BLAKE2b-256 bbce781c7ee15870e0bdf87ac2cadc07fcf0b90159275f18fc6220de2e50a79e

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.39-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.39-cp312-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.39-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fe54dee2351a0887afb6b12b371015326435e43a3cf3856000ed7d4e684a855f
MD5 cad8d73700644b8b55615b40e78db482
BLAKE2b-256 8f94184f1bd64b70fade414ca2e36da6ed4d1efd078160dc2b710d9387b0f9f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.39-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.39-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.39-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 acf945d8ae1b3677131ddae12658d956d387ac0339e6585e09ba1583d7074545
MD5 c997780114069f497c497fc7554120a6
BLAKE2b-256 66db0e0d5c52867fdbe2c025ee96c7b9a3335c39100d2b64a90963d36f367a3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.39-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.39-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.39-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c7cd16e2409f17578d2eba186571c3e53504a008962c483d3ace0a3a05a83cbb
MD5 f6bc4576e336acf56b8f45a59c5de9b8
BLAKE2b-256 12a32e682e8863767edd9fcbb689c7ac8a067ab7e339bbbb48acd5c24aa7b967

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.39-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.39-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.39-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1244cd2d1f68fdc8e1ee6c3b6f885ff35fff9deb376022680c67005e224be1bb
MD5 58dc32be4b27b16bf5e4a458dfbd77fc
BLAKE2b-256 2d8381ad7a87c957eddd9d3b515980dce00dc180eb7f1f1afde0480d565cab60

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.39-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.39-cp312-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for grafeo-0.5.39-cp312-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8dd2f5b9b0e73165a7318f9b732437c08031d3d603a35888ba067354f1061cb7
MD5 ca6189f5abc86be48c4e1794d4721be0
BLAKE2b-256 3fae341c8b242375b6e1f3e938973b4525fd6d398488884f4e24a39f8bddc5a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for grafeo-0.5.39-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