Skip to main content

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

# Create or open: one of
db = GrafeoDB()                # in-memory
# db = GrafeoDB("./path")      # persistent: created, or opened if it exists
# db = GrafeoDB.open("./path") # open existing
# db = GrafeoDB("./path", query_timeout=5)  # queries fail after 5 s (None: no limit)

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 an isolation level: "read_committed" or "snapshot" (the default)
with db.begin_transaction("read_committed") 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()

A commit that fails (a write conflict, gql_status 40000, is_retryable True) ends the transaction: tx.is_active is False after it and tx.rollback() does nothing. Transaction control statements (START TRANSACTION, COMMIT, ROLLBACK) are refused inside tx.execute() (gql_status 25000): end a transaction with tx.commit() or tx.rollback().

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.execute("CREATE SCHEMA v1")
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")

Errors

Errors from the database raise grafeo.GrafeoError, with error_code (such as GRAFEO-T001), gql_status (the ISO GQL status, such as 22012) and is_retryable. A database file that another handle of this process or another process holds raises grafeo.GrafeoLockedError (GRAFEO-S004, gql_status 08000), a subclass of GrafeoError.

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
# 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

License

Apache-2.0

Metadata

Release files for grafeo 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for grafeo 0.6.1
File Size Uploaded Provenance Actions
grafeo-0.6.1.tar.gz 5.2 MB With provenance Details for grafeo-0.6.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for grafeo 0.6.1
File Actions
grafeo-0.6.1-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details for grafeo-0.6.1-cp312-abi3-win_amd64.whl
grafeo-0.6.1-cp312-abi3-win32.whl CPython 3.12 abi3 Windows x86-32 Details for grafeo-0.6.1-cp312-abi3-win32.whl
grafeo-0.6.1-cp312-abi3-musllinux_1_2_x86_64.whl CPython 3.12 abi3 Linux musl 1.2+ x86-64 Details for grafeo-0.6.1-cp312-abi3-musllinux_1_2_x86_64.whl
grafeo-0.6.1-cp312-abi3-musllinux_1_2_aarch64.whl CPython 3.12 abi3 Linux musl 1.2+ ARM64 Details for grafeo-0.6.1-cp312-abi3-musllinux_1_2_aarch64.whl
grafeo-0.6.1-cp312-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.12 abi3 Linux glibc 2.17+ x86-64 Details for grafeo-0.6.1-cp312-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
grafeo-0.6.1-cp312-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.12 abi3 Linux glibc 2.17+ ARM64 Details for grafeo-0.6.1-cp312-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
grafeo-0.6.1-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details for grafeo-0.6.1-cp312-abi3-macosx_11_0_arm64.whl
grafeo-0.6.1-cp312-abi3-macosx_10_12_x86_64.whl CPython 3.12 abi3 macOS 10.12+ x86-64 Details for grafeo-0.6.1-cp312-abi3-macosx_10_12_x86_64.whl

Total release size: 66.7 MB

Release files / grafeo-0.6.1.tar.gz

Download URL grafeo-0.6.1.tar.gz
Size 5.2 MB
Tags Source
SHA-256 checksum
How to use checksums
509df196c5dd76321a11c18cddcc458233d08d101ec5785c6f43f68856ba4333
BLAKE2b-256 checksum
How to use checksums
74023876bc6d87ee2714d96f3f18779266e589bde31e74654e7b9e739f4c2274
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / grafeo-0.6.1-cp312-abi3-win_amd64.whl

Download URL grafeo-0.6.1-cp312-abi3-win_amd64.whl
Size 7.8 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
0e0026c130ec38770a172906143eafaeb0f10df31af893ff62b0f53be9648838
BLAKE2b-256 checksum
How to use checksums
e0436ff5c905a769a6d199ce133abe169bcca14d5a950446499dcc938d8e7f15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / grafeo-0.6.1-cp312-abi3-win32.whl

Download URL grafeo-0.6.1-cp312-abi3-win32.whl
Size 7.3 MB
Tags CPython 3.12 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
778ef848208e910e5575722c0d6e231f51d36674e12837854f556ef8a7698225
BLAKE2b-256 checksum
How to use checksums
7be9271a538855c7bd6c484c84fd708d5917a1a03728c05ad5993ea8949f38e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / grafeo-0.6.1-cp312-abi3-musllinux_1_2_x86_64.whl

Download URL grafeo-0.6.1-cp312-abi3-musllinux_1_2_x86_64.whl
Size 8.2 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
71de4be6cab9fcd57811290dbddafd2385c161d89e74ec07736d3d834464c046
BLAKE2b-256 checksum
How to use checksums
9ad37568e5d881f339044ca7ece1a0ba3165d56e2b3f8b123cab48816044a24e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / grafeo-0.6.1-cp312-abi3-musllinux_1_2_aarch64.whl

Download URL grafeo-0.6.1-cp312-abi3-musllinux_1_2_aarch64.whl
Size 7.7 MB
Tags CPython 3.12 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
e9ab7a0612c1ffb292802e6771abf786d4af63361714f3bfb6a9cad6a6711a3d
BLAKE2b-256 checksum
How to use checksums
8abc14fecc7ee5293ce17a0cbe3026ee3ddda523bd30cb92d8c7b73670020a63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / grafeo-0.6.1-cp312-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL grafeo-0.6.1-cp312-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 7.9 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
0977d4463d2030ca8175f30c7497eb6bd8ae2d5abb19ade72f5205ab8c9fd0d0
BLAKE2b-256 checksum
How to use checksums
4dd25044d24329708af00cbdc87e85145190cc87792dc69708ea27738e4f7687
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / grafeo-0.6.1-cp312-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL grafeo-0.6.1-cp312-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 7.6 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
17a421726d3fabea5e203935c76d7a575783748b107a069421fda4e212ed78d2
BLAKE2b-256 checksum
How to use checksums
21512a27cfeef60769df647c660d45d226e8ff67b266eef31401307bc31634b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / grafeo-0.6.1-cp312-abi3-macosx_11_0_arm64.whl

Download URL grafeo-0.6.1-cp312-abi3-macosx_11_0_arm64.whl
Size 7.2 MB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
01df4595394f0ee9c68f8b131a54e0a1debac6c26299fa73bd13da03da31c2da
BLAKE2b-256 checksum
How to use checksums
1cb69c007c79ee118319d770aa2653b8ee7aaa879f34c96a1a64f663ff44ecbe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / grafeo-0.6.1-cp312-abi3-macosx_10_12_x86_64.whl

Download URL grafeo-0.6.1-cp312-abi3-macosx_10_12_x86_64.whl
Size 7.7 MB
Tags CPython 3.12 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6a5b47638cb4d3274317a4c3598f657f9c6edc5cdcf0972e2e20376b58efaacf
BLAKE2b-256 checksum
How to use checksums
a86eb64ffea30fcc42fd2d0993e0704c884fea0584ecc36fd9cfd306cc8dc530
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Security for grafeo 0.6.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 9 files in this release have been uploaded with provenance metadata.

Select from 9 files

Attestation for grafeo-0.6.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.6.1 This release

9 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page