Version 1.7 of the documentation is no longer actively maintained. The site that you are currently viewing is an archived snapshot.
For up-to-date documentation, see the latest version.
The hugegraph-python-client is a Python client/SDK for HugeGraph Database.
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 hugegraph-python-client, you can use uv/pip or source code building:
# uv is optional, you can use pip directlyuv pip install hugegraph-python # Note: may not the latest version, recommend to install from source# WIP: we will use 'hugegraph-python-client' as the package name soon
Install from Source (Latest Code)
To install from the source, clone the repository and install the required dependencies:
git clone https://github.com/apache/incubator-hugegraph-ai.git
cd incubator-hugegraph-ai/hugegraph-python-client
# Normal install uv pip install .
# (Optional) install the devel versionuv pip install -e .
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:
frompyhugegraph.clientimportPyHugeClient# 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 Graphg=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).labelprint(res)g.close()
Schema Management
The hugegraph-python-client provides comprehensive schema management capabilities.
Define Property Keys
# Define a property keyclient.schema().propertyKey('name').dataType('STRING').cardinality('SINGLE').create()
Define Vertex Labels
# Define a vertex labelclient.schema().vertexLabel('person').properties('name','age').primaryKeys('name').create()
Define Edge Labels
# Define an edge labelclient.schema().edgeLabel('knows').sourceLabel('person').targetLabel('person').properties('since').create()
Define Index Labels
# Define an index labelclient.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 verticesv1=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 edgeclient.graph().addEdge(v1,'knows',v2).property('since','2020').create()
Read Vertices and Edges
# Get a vertex by IDvertex=client.graph().getVertexById(v1.id)print(vertex)# Get an edge by IDedge=client.graph().getEdgeById(edge.id)print(edge)
Update Vertices and Edges
# Update a vertexclient.graph().updateVertex(v1.id).property('age',30).update()# Update an edgeclient.graph().updateEdge(edge.id).property('since','2021').update()
Delete Vertices and Edges
# Delete a vertexclient.graph().deleteVertex(v1.id)# Delete an edgeclient.graph().deleteEdge(edge.id)
Execute Gremlin Queries
The client also supports executing Gremlin queries:
# Execute a Gremlin queryg=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.sh to 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)