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.2

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.2
File Size Uploaded Provenance Actions
grafeo-0.6.2.tar.gz 6.1 MB With provenance Details for grafeo-0.6.2.tar.gz

Built distributions (wheels)

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

Total release size: 73.8 MB

Release files / grafeo-0.6.2.tar.gz

Download URL grafeo-0.6.2.tar.gz
Size 6.1 MB
Tags Source
SHA-256 checksum
How to use checksums
af1cd4f7b77cd31d9fab1f27cd465019bb1c3a430be7b9a53380b58a62dcbf20
BLAKE2b-256 checksum
How to use checksums
c9daffc4df194f957b2d751c443bf69ab52aed60685855e79c2b3d8df9085f26
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 8, 2026.

Transparency log

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

Download URL grafeo-0.6.2-cp312-abi3-win_amd64.whl
Size 8.7 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
a3e1d6fdfc257533ff17f1b5158fee86f3cb9841b40c3880866bb3e27691fdbc
BLAKE2b-256 checksum
How to use checksums
6fa715fd80087ee01ac4ad1b21799a0023c74886f93ce29d3ed25e45fadb9329
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 8, 2026.

Transparency log

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

Download URL grafeo-0.6.2-cp312-abi3-win32.whl
Size 8.1 MB
Tags CPython 3.12 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
53013c7d9fa9b5061f68fe8b482bd0f2a4d376e57db7d717b8271cb31bf657e1
BLAKE2b-256 checksum
How to use checksums
7d3e00e6c01dc77017cf4dda6ef357acc20eefc1c06cb1777db07bdd8750317d
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 8, 2026.

Transparency log

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

Download URL grafeo-0.6.2-cp312-abi3-musllinux_1_2_x86_64.whl
Size 9.0 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
950601289bfaf51f71ec2c29c583275d39aa929b4017871a5ec4c0bce72ef1d5
BLAKE2b-256 checksum
How to use checksums
8b81cbbaf9cb08fd473eeb96606ed74240969e966fbb353e3d62cc78049296f8
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 8, 2026.

Transparency log

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

Download URL grafeo-0.6.2-cp312-abi3-musllinux_1_2_aarch64.whl
Size 8.5 MB
Tags CPython 3.12 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
686658de7ef43eb5099557e10e8f624f30aa4f8307a13d8b0a889832a5ff9de5
BLAKE2b-256 checksum
How to use checksums
5ce1ace9f528611ec06c11104a5b9ca2db88cceda639a2e977169e6e59bcf707
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 8, 2026.

Transparency log

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

Download URL grafeo-0.6.2-cp312-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 8.7 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
606bc265b6f50f181a6f195a93104ad6eb53f55fe46bcc02baf80d4298293a1e
BLAKE2b-256 checksum
How to use checksums
f1cf9b5ba40880ca35247d98abe63002148aba4335df8d8f4dcc7a2be49c8871
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 8, 2026.

Transparency log

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

Download URL grafeo-0.6.2-cp312-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 8.3 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
16093c5d82c8926c248356151e49c3d87b025cf83d97f992e89c707dcc79c033
BLAKE2b-256 checksum
How to use checksums
70f637aa5c9c3e8e47edc25e66cf76d296756161d2b59ce1f8bde324ca6247c3
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 8, 2026.

Transparency log

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

Download URL grafeo-0.6.2-cp312-abi3-macosx_11_0_arm64.whl
Size 7.9 MB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c37c9ac36807cf1b639ae3530c4274ad200f1272a3abbb7c778e60a25a50a1d5
BLAKE2b-256 checksum
How to use checksums
cf1dfe2d3caa253cec8f2e4335543cfa608be462355d0bb9db6041cdc2f88c64
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 8, 2026.

Transparency log

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

Download URL grafeo-0.6.2-cp312-abi3-macosx_10_12_x86_64.whl
Size 8.5 MB
Tags CPython 3.12 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6638df184b6879f22c8d3655dfd8a3bcf3e70679a56fc7b97798ea9397bd25ae
BLAKE2b-256 checksum
How to use checksums
49c93226dfa40806238587d5faba8bd07f045231d90346f6bb75cc829b17fbbd
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 8, 2026.

Transparency log

Security for grafeo 0.6.2

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.2.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 8, 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.2 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