Skip to content

Graphite Query API Reference

This page documents API reference for QueryResult class, which provides a complete interface to query on your database with Pythonic methods. See engine.query to learn how you can start query. See Query Engine Tutorials for more information.

graphite.QueryResult

QueryResult(graph_engine: GraphiteEngine, nodes: set[Node], edges: set[Relation] | None = None)

Represents a query result that can be chained

Parameters:

  • graph_engine (GraphiteEngine) –

    Graphite engine instance

  • nodes (set[Node]) –

    including nodes

  • edges (set[Relation] | None, default: None ) –

    including edges

Methods:

  • avg

    Average value of a field in result

  • both

    Traverse both directions

  • count

    Count nodes

  • distinct

    Get distinct nodes (remove duplicates)

  • exclude

    Removes result of given query from current nodes and relations

  • first

    Get first node by ID or given field

  • get

    Get all nodes

  • group_by

    Group nodes by field

  • ids

    Get node IDs

  • incoming

    Traverse incoming relations

  • intersect

    Just keeps shared nodes and relations between current and given queries

  • limit

    Limit number of results (just nodes)

  • max

    Maximum value of a field in result nodes

  • min

    Minimum value of a field in result nodes

  • order_by

    Order nodes by field

  • outgoing

    Traverse outgoing relations

  • paginate

    Limit number of results to specified page

  • relations

    Get all relations

  • remove

    Remove current result nodes

  • remove_relations

    Remove current result relations

  • set_val

    Change result nodes' values

  • sum

    Sum of a field values in nodes

  • traverse

    Traverse relations from current nodes

  • union

    Merge query results (nodes and relations)

  • validate

    Removes invalid nodes and relations (remove additional items compared to engine)

  • where

    Filter nodes based on condition

  • with_fields

    Filter nodes with given fields

  • with_type

    Filter nodes based on type

Functions

avg

avg(field: str) -> float

Average value of a field in result

Note: This query skips non-numeric values.

Parameters:

  • field (str) –

    field name

Returns:

  • float

    average of field

Raises:

  • TypeError

    If there isn't any numeric value in given field

both

both(relation_type: str | None = None) -> QueryResult

Traverse both directions

Parameters:

  • relation_type (str | None, default: None ) –

    optional relation type for valid traverses

Returns:

  • QueryResult

    a new query with result nodes and traversed relations

count

count() -> int

Count nodes

Returns:

  • int

    number of nodes

distinct

distinct() -> QueryResult

Get distinct nodes (remove duplicates)

Returns:

  • QueryResult

    a new query with distinct nodes and original relations

exclude

exclude(query: QueryResult) -> QueryResult

Removes result of given query from current nodes and relations

Parameters:

Returns:

  • QueryResult

    a new query with excluded nodes and relations

first

first(order_by_field: str | None = None, descending: bool = False) -> Node | None

Get first node by ID or given field

Parameters:

  • order_by_field (str | None, default: None ) –

    optional field to order before slicing

  • descending (bool, default: False ) –

    sort results in descending order before slicing

Returns:

  • Node | None

    first node or None

get

get() -> set[Node]

Get all nodes

Returns:

group_by

group_by(field: str) -> dict[Any, set[Node]]

Group nodes by field

Parameters:

  • field (str) –

    field name

Returns:

ids

ids() -> set[str]

Get node IDs

Returns:

  • set[str]

    list of node IDs

incoming

incoming(relation_type: str | None = None) -> QueryResult

Traverse incoming relations

Parameters:

  • relation_type (str | None, default: None ) –

    optional relation type for valid traverses

Returns:

  • QueryResult

    a new query with result nodes and traversed relations

intersect

intersect(query: QueryResult) -> QueryResult

Just keeps shared nodes and relations between current and given queries

Parameters:

Returns:

  • QueryResult

    a new query with intersected nodes and relations

limit

limit(n: int, order_by_field: str | None = None, descending: bool = False) -> QueryResult

Limit number of results (just nodes)

Note: Before slicing, nodes will be sorted by IDs or given field.

Parameters:

  • n (int) –

    number of results to return

  • order_by_field (str | None, default: None ) –

    optional field to order results by it before slicing

  • descending (bool, default: False ) –

    sort results in descending order before slicing

Returns:

  • QueryResult

    a new query with all relations and limited nodes

max

max(field: str) -> float

Maximum value of a field in result nodes

Parameters:

  • field (str) –

    field name

Returns:

  • float

    maximum value

Raises:

  • TypeError

    If there isn't any numeric value in given field

min

min(field: str) -> float

Minimum value of a field in result nodes

Parameters:

  • field (str) –

    field name

Returns:

  • float

    minimum value

Raises:

  • TypeError

    If there isn't any numeric value in given field

order_by

order_by(by_field: str, descending: bool = False) -> list[Node]

Order nodes by field

Parameters:

  • by_field (str) –

    field name

  • descending (bool, default: False ) –

    whether to sort by ascending or descending

Returns:

outgoing

outgoing(relation_type: str | None = None) -> QueryResult

Traverse outgoing relations

Parameters:

  • relation_type (str | None, default: None ) –

    optional relation type for valid traverses

Returns:

  • QueryResult

    a new query with result nodes and traversed relations

paginate

paginate(page: int, per_page: int, order_by_field: str | None = None, descending: bool = False) -> QueryResult

Limit number of results to specified page

Note: Before slicing, nodes will be sorted by IDs or given field.

Parameters:

  • page (int) –

    page number (from 0)

  • per_page (int) –

    number of results in each page

  • order_by_field (str | None, default: None ) –

    optional field to order results by it before slicing

  • descending (bool, default: False ) –

    sort results in descending order before slicing

Returns:

  • QueryResult

    a new query with all relations and paged nodes

relations

relations() -> set[Relation]

Get all relations

Returns:

remove

remove() -> QueryResult

Remove current result nodes

Note: Just valid nodes will be removed from engine.

Note: This query mutates nodes in-place and changes will be applied to engine directly.

Returns:

  • QueryResult

    A new query with remaining valid edges and no nodes

remove_relations

remove_relations() -> QueryResult

Remove current result relations

Note: Just valid relations will be removed from engine.

Note: This query mutates relations in-place and changes will be applied to engine directly.

Returns:

  • QueryResult

    A new query with current nodes and no relations

Raises:

  • NotFoundError

    if any relations not found in engine

set_val

set_val(**values: Any) -> QueryResult

Change result nodes' values

Note: Field validation happens before any mutation.

Note: This query mutates nodes in-place and changes will be applied to engine directly.

Note: This query raises NotFoundError for nodes without compatible fields, use .with_fields() to ensure all fields are valid.

Parameters:

  • **values (Any, default: {} ) –

    field=value pairs

Returns:

Raises:

  • NotFoundError

    if any field was invalid for any node

sum

sum(field: str) -> float

Sum of a field values in nodes

Note: This query skips non-numeric values.

Parameters:

  • field (str) –

    field name

Returns:

traverse

traverse(relation_type: str | None = None, direction: Direction = OUTGOING) -> QueryResult

Traverse relations from current nodes

Note: Invalid nodes will be removed while traversing relations.

Parameters:

  • relation_type (str | None, default: None ) –

    optional relation type for valid traverses

  • direction (Direction, default: OUTGOING ) –

    traverse direction

Returns:

  • QueryResult

    a new query with result nodes and traversed relations

Raises:

  • NotFoundError

    if relation_type is invalid for engine

union

union(query: QueryResult) -> QueryResult

Merge query results (nodes and relations)

Parameters:

Returns:

  • QueryResult

    a new query with merged nodes and relation

validate

validate() -> QueryResult

Removes invalid nodes and relations (remove additional items compared to engine)

Returns:

  • QueryResult

    A new query with valid nodes and relations

where

where(condition: str | Callable[[Node], bool]) -> QueryResult

Filter nodes based on condition

Parameters:

Returns:

  • QueryResult

    new query with nodes filtered based on condition

Raises:

  • ConditionError

    if fail on executing condition

with_fields

with_fields(*fields: str) -> QueryResult

Filter nodes with given fields

Parameters:

  • *fields (str, default: () ) –

    fields to filter

Returns:

  • QueryResult

    a new query with nodes filtered based on fields

with_type

with_type(node_type: str, include_parent_types: bool = True) -> QueryResult

Filter nodes based on type

Note: This query uses engine.is_node_from_type() when include_parent_types is True. So invalid nodes will be ignored in this situation.

Parameters:

  • node_type (str) –

    node type to filter

  • include_parent_types (bool, default: True ) –

    whether to include parent types or not

Returns:

  • QueryResult

    a new query with nodes filtered based on type