hugegraph-python-client
Python client for Apache HugeGraph, distributed as hugegraph-python and imported as pyhugegraph.
It is used to define graph structures, perform CRUD operations on graph data, manage schemas, and execute Gremlin queries. Both the hugegraph-llm and hugegraph-ml modules depend on this foundational library.
Installation
Install the released package (Stable)
To install the released hugegraph-python distribution (Python 3.10+):
# uv is optional, you can use pip directly
uv pip install hugegraph-python
Install from Source (Latest Code)
To install from the source, clone the repository and install the required dependencies:
git clone https://github.com/apache/hugegraph-ai.git
cd hugegraph-ai
# Use uv sync to install dependencies (workspace member)
uv sync --extra python-client # Installs hugegraph-python from hugegraph-python-client/
source .venv/bin/activate # Activate once - all commands below assume this environment
Usage
Defining Graph Structures
You can use the hugegraph-python-client to define graph structures. Below is an example of how to define a graph:
from pyhugegraph.client import PyHugeClient
# Initialize the client
# For HugeGraph API version ≥ v3: (Or enable graphspace function)
# - The 'graphspace' parameter becomes relevant if graphspaces are enabled.(default name is 'DEFAULT')
# - Otherwise, the graphspace parameter is optional and can be ignored.
client = PyHugeClient("127.0.0.1", "8080", user="admin", pwd="admin", graph="hugegraph", graphspace="DEFAULT")
""""
Note:
Could refer to the official REST-API doc of your HugeGraph version for accurate details.
If some API is not as expected, please submit a issue or contact us.
"""
schema = client.schema()
schema.propertyKey("name").asText().ifNotExist().create()
schema.propertyKey("birthDate").asText().ifNotExist().create()
schema.vertexLabel("Person").properties("name", "birthDate").usePrimaryKeyId().primaryKeys("name").ifNotExist().create()
schema.vertexLabel("Movie").properties("name").usePrimaryKeyId().primaryKeys("name").ifNotExist().create()
schema.edgeLabel("ActedIn").sourceLabel("Person").targetLabel("Movie").ifNotExist().create()
print(schema.getVertexLabels())
print(schema.getEdgeLabels())
print(schema.getRelations())
# Init Graph
g = client.graph()
v_al_pacino = g.addVertex("Person", {"name": "Al Pacino", "birthDate": "1940-04-25"})
v_robert = g.addVertex("Person", {"name": "Robert De Niro", "birthDate": "1943-08-17"})
v_godfather = g.addVertex("Movie", {"name": "The Godfather"})
v_godfather2 = g.addVertex("Movie", {"name": "The Godfather Part II"})
v_godfather3 = g.addVertex("Movie", {"name": "The Godfather Coda The Death of Michael Corleone"})
g.addEdge("ActedIn", v_al_pacino.id, v_godfather.id, {})
g.addEdge("ActedIn", v_al_pacino.id, v_godfather2.id, {})
g.addEdge("ActedIn", v_al_pacino.id, v_godfather3.id, {})
g.addEdge("ActedIn", v_robert.id, v_godfather2.id, {})
res = g.getVertexById(v_al_pacino.id).label
print(res)
g.close()
Schema Management
The hugegraph-python-client provides comprehensive schema management capabilities.
Define Property Keys
# Define a property key
client.schema().propertyKey("name").dataType("STRING").cardinality("SINGLE").create()
Define Vertex Labels
# Define a vertex label
client.schema().vertexLabel("person").properties("name", "age").primaryKeys("name").create()
Define Edge Labels
# Define an edge label
client.schema().edgeLabel("knows").sourceLabel("person").targetLabel("person").properties("since").create()
Define Index Labels
# Define an index label
client.schema().indexLabel("personByName").onV("person").by("name").secondary().create()
CRUD Operations
The client allows you to perform CRUD operations on the graph data. Below are examples of how to create, read, update, and delete vertices and edges:
Create Vertices and Edges
# Create vertices
v1 = client.graph().addVertex("person").property("name", "John").property("age", 29).create()
v2 = client.graph().addVertex("person").property("name", "Jane").property("age", 25).create()
# Create an edge
client.graph().addEdge(v1, "knows", v2).property("since", "2020").create()
Read Vertices and Edges
# Get a vertex by ID
vertex = client.graph().getVertexById(v1.id)
print(vertex)
# Get an edge by ID
edge = client.graph().getEdgeById(edge.id)
print(edge)
Update Vertices and Edges
# Update a vertex
client.graph().updateVertex(v1.id).property("age", 30).update()
# Update an edge
client.graph().updateEdge(edge.id).property("since", "2021").update()
Delete Vertices and Edges
# Delete a vertex
client.graph().deleteVertex(v1.id)
# Delete an edge
client.graph().deleteEdge(edge.id)
Execute Gremlin Queries
The client also supports executing Gremlin queries:
# Execute a Gremlin query
g = client.gremlin()
res = g.exec("g.V().limit(5)")
print(res)
Other info is under 🚧 (Welcome to add more docs for it, users could refer java-client-doc for similar usage)
Contributing
- Welcome to contribute to
hugegraph-python-client. Please see the Guidelines for more information. - Code format: Please run
./style/code_format_and_analysis.shto format your code before submitting a PR.
Thank you to all the people who already contributed to hugegraph-python-client!
Contact Us
- GitHub Issues: Feedback on usage issues and functional requirements (quick response)
- Feedback Email: dev@hugegraph.apache.org (subscriber only)
Metadata
Release files for hugegraph-python 1.7.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 | |
|---|---|---|---|---|
| hugegraph_python-1.7.1.tar.gz | 31.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hugegraph_python-1.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 95.5 kB
Release files / hugegraph_python-1.7.1.tar.gz
| Download URL | hugegraph_python-1.7.1.tar.gz |
|---|---|
| Size | 31.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7db91e70e3d9152cf99c4d3f79967a9f573fb15a666333fe5a68f5cde59b96cd
|
|
BLAKE2b-256 checksum How to use checksums |
cbd907372cb27d1f36cef23b922b356df881a565e664129e7295cff5e692ef7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","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 / hugegraph_python-1.7.1-py3-none-any.whl
| Download URL | hugegraph_python-1.7.1-py3-none-any.whl |
|---|---|
| Size | 64.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
44d804bbfc7472fd40ff5c4d41a9ce3d15d1dab9f117476dd2de5335b0b32849
|
|
BLAKE2b-256 checksum How to use checksums |
6447a06c5952dee468fd545ef92786e6f2440c087101b6e0d1ac6b21b75f9272
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","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 hugegraph-python 1.7.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.