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.40.tar.gz (2.3 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.40-cp312-abi3-win_amd64.whl (4.9 MB view details)

Uploaded CPython 3.12+Windows x86-64

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

Uploaded CPython 3.12+Windows x86

grafeo-0.5.40-cp312-abi3-musllinux_1_2_x86_64.whl (5.4 MB view details)

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

grafeo-0.5.40-cp312-abi3-musllinux_1_2_aarch64.whl (5.1 MB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

grafeo-0.5.40-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.40-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ ARM64

grafeo-0.5.40-cp312-abi3-macosx_11_0_arm64.whl (4.7 MB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

grafeo-0.5.40-cp312-abi3-macosx_10_12_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.12+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: grafeo-0.5.40.tar.gz
  • Upload date:
  • Size: 2.3 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.40.tar.gz
Algorithm Hash digest
SHA256 3bc52c966c3742f132672b6477f2e8458641d587b35f007b6f60f04e1b069da6
MD5 fc0b94720501f237dc1d9d551aaa6031
BLAKE2b-256 b14e3f383df7b4e322e6123baaaaac4220debdcbf088a0803eea0111a227cff6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: grafeo-0.5.40-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.40-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7aad3a3b81be642bbdcbd801b4b98fd8647831537fa8c56383cda03602a32740
MD5 21b90838f247ad0702528dae107eb985
BLAKE2b-256 960f2ad0f3ee11bd80d1b8d661b143c230fb25df8f21f039d4456dcda9eb3922

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: grafeo-0.5.40-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.40-cp312-abi3-win32.whl
Algorithm Hash digest
SHA256 431aba2537b5dfa521369c94714c27597afabecd9875502d98162d99d58807ea
MD5 cf96f63887e81f9d0099121fdeef514e
BLAKE2b-256 87b104c4529579dd1bb2a3c48fa6999e96e9f2b928477f19c9eb6f5e59706e53

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for grafeo-0.5.40-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8b38978b0d5b77c6b2bb644fcee294705e2aaf4deb00564dfdb08c9d9b1e0535
MD5 df3e5ae002d8d93f61e4114edc88945f
BLAKE2b-256 6d8173642db3269476d827e7f3c3215d0377c18a5df8a3fefeb0eafe17a83c5a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for grafeo-0.5.40-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9a421a82779c232523843a380452bb7683affd9bb658487a96a580027181a62f
MD5 0f5125516380cb411512783d2e8e0e06
BLAKE2b-256 c9ac80cc240fc9feed2bb6fb2dfea741d11c3bc5a04771a6852164efc43c9eda

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for grafeo-0.5.40-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 859282ac0aa5b566977ba088a59d5679eb20886c795a18af97da5d273315f5b4
MD5 100d0a75ee12d9702309d4ea0292cdd9
BLAKE2b-256 ab9806a102828f250a23fe523f0ef8f94169594cc7550566df768c87ac376516

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for grafeo-0.5.40-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 26ca9d7e5b7cbcb305f9173c95080d1b1fb01a73b7921ed0d5dd1ae7af11c258
MD5 356530924f8c1e7a10918fc7271b9663
BLAKE2b-256 4b66c11fccb34c53ad9710ca66c063a0e1c4931cc581794aaa8e467fc773cc2f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for grafeo-0.5.40-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d19e39080e910968c855f65ca0f3fa44e3588d5284729cc190c27f43c932bae
MD5 3cc75219df2c12a796b5084305a1d71b
BLAKE2b-256 3b7d9a575ad15f600663d5dde60065a800be96fa1a9de589e05401645c66b79b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for grafeo-0.5.40-cp312-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bbfbc803e214bcd7ff2d898d462a0f92276e8fbff64b935c9fe2b083846acc93
MD5 2facff9e1147f4168215a870440a33e4
BLAKE2b-256 9c4bdc25d9d5455c7ce9abd07eadf3ec56149d09ba16fd7b5134c7c67f4a080d

See more details on using hashes here.

Provenance

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