This section introduces methods for the insertion of nodes and edges.
Graph Structure
The examples in this section demonstrate the insertion and deletion of nodes and edges in a graph based on the following schema and property definitions:

insertNodes()
Inserts nodes to a schema in the graph.
Parameters
nodes: List[Node]
: The list of nodes to be inserted; the attributeuuid
of eachNode
cannot be set.schemaName: str
: Schema name.InsertRequestConfig
(Optional): Request configuration.
Returns
Response
: Response of the request.
# Inserts two 'user' nodes into the graph 'social'
insertRequestConfig = InsertRequestConfig(graph="social")
nodes = [
Node(id="U1", values={
"name": "Alice",
"age": 18,
"score": 65.32,
"birthday": "1993-5-4",
"active": 0,
"location": "point({latitude: 132.1, longitude: -1.5})",
"profile": "castToRaw(abc)",
"interests": ["tennis", "violin"],
"permissionCodes": [2004, 3025, 1025]
}),
Node(id="U2", values={
"name": "Bob"
})
]
response = Conn.insertNodes(nodes, "user", insertRequestConfig)
if response.status.code.name == "SUCCESS":
print(response.status.code.name)
else:
print(response.status.message)
SUCCESS
insertEdges()
Inserts edges to a schema in the graph.
Parameters
edges: List[Edge]
: The list of edges to be inserted; the attributesfromId
andtoId
of eachEdge
are mandatory,uuid
,fromUuid
, andtoUuid
cannot be set.schemaName: str
: Schema name.InsertRequestConfig
(Optional): Request configuration.
Returns
Response
: Response of the request.
# Inserts two 'follows' edges to the graph 'social'
insertRequestConfig = InsertRequestConfig(graph="social")
edges = [
Edge(fromId="U1", toId="U2", values={"createdOn": "2024-5-6", "weight": 3.2}),
Edge(fromId="U2", toId="U1", values={"createdOn": 1715169600})
]
response = Conn.insertEdges(edges, "follows", insertRequestConfig)
if response.status.code.name == "SUCCESS":
print(response.status.code.name)
else:
print(response.status.message)
SUCCESS
insertNodesBatchBySchema()
Inserts nodes to a schema in the graph through gRPC. This method is optimized for bulk insertion and requires each Node.values
has the same structure with the provided Schema.properties
.
Parameters
schema: Schema
: The target schema; the attributesname
anddbType
are mandatory,properties
should include some or all properties.nodes: List[Node]
: The list of nodes to be inserted; the attributeuuid
of eachNode
cannot be set,values
must have the same structure withSchema.properties
.InsertRequestConfig
(Optional): Request configuration.
Returns
InsertResponse
: Response of the insertion request.
# Inserts two 'user' nodes into the graph 'social'
insertRequestConfig = InsertRequestConfig(graph="social")
schema = Schema(
name="user",
dbType=DBType.DBNODE,
properties=[
Property(name="name", type=UltipaPropertyType.STRING),
Property(name="age", type=UltipaPropertyType.INT32),
Property(name="score", type=UltipaPropertyType.DECIMAL),
Property(name="birthday", type=UltipaPropertyType.DATETIME),
Property(name="active", type=UltipaPropertyType.BOOL),
Property(name="location", type=UltipaPropertyType.POINT),
Property(name="profile", type=UltipaPropertyType.BLOB),
Property(name="interests", type=UltipaPropertyType.LIST, subType=[UltipaPropertyType.STRING]),
Property(name="permissionCodes", type=UltipaPropertyType.SET, subType=[UltipaPropertyType.INT32])
]
)
nodes = [
Node(id="U1", values={
"name": "Alice",
"age": 18,
"score": 65.32,
"birthday": "1993-5-4",
"active": 0,
"location": "point({latitude: 132.1, longitude: -1.5})",
"profile": "castToRaw(abc)",
"interests": ["tennis", "violin"],
"permissionCodes": [2004, 3025, 1025]
}),
Node(id="U2", values={
"name": "Bob",
"age": None,
"score": None,
"birthday": None,
"active": None,
"location": None,
"profile": None,
"interests": None,
"permissionCodes": None
})
]
insertResponse = Conn.insertNodesBatchBySchema(schema, nodes, insertRequestConfig)
if insertResponse.errorItems:
print("Error items:", insertResponse.errorItems)
else:
print("All nodes inserted successfully")
All nodes inserted successfully
insertEdgesBatchBySchema()
Inserts edges to a schema in the graph through gRPC. This method is optimized for bulk insertion and requires each each Edge.values
has the same structure with the provided Schema.properties
.
Parameters
schema: Schema
: The target schema; the attributesname
anddbType
are mandatory,properties
should include some or all properties.edges: List[Edge]
: The list of edges to be inserted; the attributesfromId
andtoId
of eachEdge
are mandatory,uuid
,fromUuid
, andtoUuid
cannot be set,values
must have the same structure withSchema.properties
.InsertRequestConfig
(Optional): Request configuration.
Returns
InsertResponse
: Response of the insertion request.
# Inserts two 'follows' edges into the graph 'social'
insertRequestConfig = InsertRequestConfig(graph="social")
schema = Schema(
name="follows",
dbType=DBType.DBEDGE,
properties=[
Property(name="createdOn", type=UltipaPropertyType.TIMESTAMP),
Property(name="weight", type=UltipaPropertyType.FLOAT)
]
)
edges = [
Edge(fromId="U1", toId="U2", values={"createdOn": "2024-5-6", "weight": 3.2}),
Edge(fromId="U2", toId="U1", values={"createdOn": 1715169600, "weight": None})
]
insertResponse = Conn.insertEdgesBatchBySchema(schema, edges, insertRequestConfig)
if insertResponse.errorItems:
print("Error items:", insertResponse.errorItems)
else:
print("All edges inserted successfully")
All edges inserted successfully
insertNodesBatchAuto()
Inserts nodes to one or multipe schemas in the graph through gRPC. This method is optimized for bulk insertion and requires all Node
s of the same schema
have the same values
structure.
Parameters
nodes: List[Node]
: The list of nodes to be inserted; the attributeuuid
of eachNode
cannot be set,schema
is mandatory, allNode
s of the sameschema
have the samevalues
structure.InsertRequestConfig
(Optional): Request configuration.
Returns
Dict[str,InsertResponse]
: The schema name, and response of the insertion request.
# Inserts two 'user' nodes and a 'product' node into the graph 'social'
insertRequestConfig = InsertRequestConfig(graph="social")
nodes = [
Node(id="U1", schema="user", values={
"name": "Alice",
#"age": 18,
"score": 65.32,
"birthday": "1993-5-4",
"active": True,
"location": "point({latitude: 132.1, longitude: -1.5})",
"profile": "castToRaw(abc)",
"interests": ["tennis", "violin"],
"permissionCodes": [2004, 3025, 1025]
}),
Node(id="U2", schema="user", values={
"name": "Bob",
#"age": None,
"score": None,
"birthday": None,
"active": None,
"location": None,
"profile": None,
"interests": None,
"permissionCodes": None
}),
Node(schema="product", values={
"name": "Wireless Earbud",
"price": 93.2
})
]
result = Conn.insertNodesBatchAuto(nodes, insertRequestConfig)
for schemaName, insertResponse in result.items():
if insertResponse.errorItems:
print("Error items of", schemaName, "nodes:", insertResponse.errorItems)
else:
print("All", schemaName, "nodes inserted successfully")
All user nodes inserted successfully
All product nodes inserted successfully
insertEdgesBatchAuto()
Inserts edges to one or multipe schemas in the graph through gRPC. This method is optimized for bulk insertion and requires all Edge
s of the same schema
have the same values
structure.
Parameters
edges: List[Edge]
: The list of edges to be inserted; the attributesfromId
andtoId
of eachEdge
are mandatory,uuid
,fromUuid
, andtoUuid
cannot be set,schema
is mandatory, allEdge
s of the sameschema
have the samevalues
structure.InsertRequestConfig
(Optional): Request configuration.
Returns
Dict[str,InsertResponse]
: The schema name, and response of the insertion request.
# Inserts two 'follows' edges and a 'purchased' edge into the graph 'social'
insertRequestConfig = InsertRequestConfig(graph="social")
edges = [
Edge(schema="follows", fromId="U1", toId="U2", values={"createdOn": "2024-05-06", "weight": 3.2}),
Edge(schema="follows", fromId="U2", toId="U1", values={"createdOn": 1715169600, "weight": None}),
Edge(schema="purchased", fromId="U2", toId="67da1ae90000020020000013", values={})
]
result = Conn.insertEdgesBatchAuto(edges, insertRequestConfig)
for schemaName, insertResponse in result.items():
if insertResponse.errorItems:
print("Error items of", schemaName, "edges:", insertResponse.errorItems)
else:
print("All", schemaName, "edges inserted successfully")
All follows edges inserted successfully
All purchased edges inserted successfully
Full Example
from ultipa import UltipaConfig, Connection, InsertRequestConfig, Node
ultipaConfig = UltipaConfig()
# URI example: ultipaConfig.hosts = ["https://mqj4zouys.us-east-1.cloud.ultipa.com:60010"]
ultipaConfig.hosts = ["192.168.1.85:60061", "192.168.1.87:60061", "192.168.1.88:60061"]
ultipaConfig.username = "<username>"
ultipaConfig.password = "<password>"
Conn = Connection.NewConnection(defaultConfig=ultipaConfig)
# Inserts two 'user' nodes, a 'product' node, two 'follows' edges, and a 'purchased' edge into the graph 'social'
insertRequestConfig = InsertRequestConfig(graph="social")
nodes = [
Node(id="U1", schema="user", values={
"name": "Alice",
#"age": 18,
"score": 65.32,
"birthday": "1993-5-4",
"active": True,
"location": "point({latitude: 132.1, longitude: -1.5})",
"profile": "castToRaw(abc)",
"interests": ["tennis", "violin"],
"permissionCodes": [2004, 3025, 1025]
}),
Node(id="U2", schema="user", values={
"name": "Bob",
#"age": None,
"score": None,
"birthday": None,
"active": None,
"location": None,
"profile": None,
"interests": None,
"permissionCodes": None
}),
Node(id="P1", schema="product", values={
"name": "Wireless Earbud",
"price": 93.2
})
]
edges = [
Edge(schema="follows", fromId="U1", toId="U2", values={"createdOn": "2024-05-06", "weight": 3.2}),
Edge(schema="follows", fromId="U2", toId="U1", values={"createdOn": 1715169600, "weight": None}),
Edge(schema="purchased", fromId="U2", toId="P1", values={})
]
result_n = Conn.insertNodesBatchAuto(nodes, insertRequestConfig)
for schemaName, insertResponse in result_n.items():
if insertResponse.errorItems:
print("Error items of", schemaName, "nodes:", insertResponse.errorItems)
else:
print("All", schemaName, "nodes inserted successfully")
result_e = Conn.insertEdgesBatchAuto(edges, insertRequestConfig)
for schemaName, insertResponse in result_e.items():
if insertResponse.errorItems:
print("Error items of", schemaName, "edges:", insertResponse.errorItems)
else:
print("All", schemaName, "edges inserted successfully")