falkordb-py
FalkorDB Python client
see docs
Installation
pip install FalkorDB
For faster parsing of large results (for example vector properties), install the
optional hiredis parser. redis uses it automatically:
pip install "FalkorDB[hiredis]"
Usage
Run FalkorDB instance
Docker:
docker run --rm -p 6379:6379 falkordb/falkordb
Or use FalkorDB Cloud
Synchronous Example
from falkordb import FalkorDB
# Connect to FalkorDB
db = FalkorDB(host="localhost", port=6379)
# Select the social graph
g = db.select_graph("social")
# Create 100 nodes and return a handful
nodes = g.query(
"UNWIND range(0, 100) AS i CREATE (n {v:1}) RETURN n LIMIT 10"
).result_set
for n in nodes:
print(n)
# Read-only query the graph for the first 10 nodes
nodes = g.ro_query("MATCH (n) RETURN n LIMIT 10").result_set
# Copy the Graph
copy_graph = g.copy("social_copy")
# Delete the Graph
g.delete()
Asynchronous Example
import asyncio
from falkordb.asyncio import FalkorDB
from redis.asyncio import BlockingConnectionPool
async def main():
# Connect to FalkorDB
pool = BlockingConnectionPool(
max_connections=16, timeout=None, decode_responses=True
)
db = FalkorDB(connection_pool=pool)
# Select the social graph
g = db.select_graph("social")
# Execute query asynchronously
result = await g.query(
"UNWIND range(0, 100) AS i CREATE (n {v:1}) RETURN n LIMIT 10"
)
# Process results
for n in result.result_set:
print(n)
# Run multiple queries concurrently
tasks = [
g.query("MATCH (n) WHERE n.v = 1 RETURN count(n) AS count"),
g.query('CREATE (p:Person {name: "Alice"}) RETURN p'),
g.query('CREATE (p:Person {name: "Bob"}) RETURN p'),
]
results = await asyncio.gather(*tasks)
# Process concurrent results
print(f"Node count: {results[0].result_set[0][0]}")
print(f"Created Alice: {results[1].result_set[0][0]}")
print(f"Created Bob: {results[2].result_set[0][0]}")
# Close the connection when done
await pool.aclose()
# Run the async example
if __name__ == "__main__":
asyncio.run(main())
Sentinel Failover
Point the client at a Sentinel and it connects to the monitored master. The Sentinel must monitor exactly one master; the client raises an error otherwise. After a failover, it reconnects to the new master:
from falkordb import FalkorDB
db = FalkorDB(host="localhost", port=26379)
A dropped connection or a timeout does not tell whether a write already ran on the server, so a write that fails this way is not sent again: the error is raised to the caller. Reads, and writes that provably never ran (the connection could not be opened, or a demoted master rejected the write as read-only), are retried according to the client's retry settings. FalkorDB does not retry by default, so pass a retry policy to ride out a failover.
To resend writes as well, pass retry_writes=True. A resent write may then run twice, so only enable it when your write queries are safe to repeat, for example MERGE instead of CREATE:
from redis.backoff import ExponentialBackoff
from redis.exceptions import ConnectionError, ReadOnlyError, TimeoutError
from redis.retry import Retry
db = FalkorDB(
host="localhost",
port=26379,
retry=Retry(ExponentialBackoff(cap=1, base=0.1), 15),
retry_on_error=[ConnectionError, TimeoutError, ReadOnlyError],
retry_writes=True,
)
Metadata
Release files for FalkorDB 1.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| falkordb-1.8.1.tar.gz | 134.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| falkordb-1.8.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 175.4 kB
Release files / falkordb-1.8.1.tar.gz
| Download URL | falkordb-1.8.1.tar.gz |
|---|---|
| Size | 134.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ab3fd5e3880a3a2708efbcc536a9175f24a59bff328758a3819dca8994526be
|
|
BLAKE2b-256 checksum How to use checksums |
82e518675f4538d33fdaf18279d89cdc663c02ac3987ef200dbc30b825308ae6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / falkordb-1.8.1-py3-none-any.whl
| Download URL | falkordb-1.8.1-py3-none-any.whl |
|---|---|
| Size | 40.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ad9116f073de822bd1dd98f0dea41eadf93b75ef5f412e34abb60548211c30af
|
|
BLAKE2b-256 checksum How to use checksums |
9df1306e8e8e9901553cb924162ada7dbf1740ebdc221c575fc8c1856f1d277e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for FalkorDB 1.8.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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.