import redis from redisgraph import Node, Edge, Graph def print_res(result): # Iterate through resultset, skip header row at position 0 for record in result.result_set: person_name = record[0] person_age = record[1] person_gender = record[2] person_status = record[3] country_name = record[4] print('Name: {:>12}\tAge: {:>4}\tGender: {:>6}\tStatus: {:>10}\t Country: {}'.format(person_name, person_age, person_gender, person_status, country_name)) def main(): r = redis.Redis(decode_responses=True, host='localhost', port=6379) r.delete('travel') redis_graph = Graph('travel', r) john = Node(label='person', properties={'name': 'John Doe', 'age': 33, 'gender': 'male', 'status': 'single'}) redis_graph.add_node(john) japan = Node(label='country', properties={'name': 'Japan'}) redis_graph.add_node(japan) edge_john = Edge(john, 'visited', japan, properties={'purpose': 'pleasure'}) redis_graph.add_edge(edge_john) pearl = Node(label='person', properties={'name': 'Pearl White', 'age': 25, 'gender': 'female', 'status': 'married'}) redis_graph.add_node(pearl) australia = Node(label='country', properties={'name': 'Australia'}) redis_graph.add_node(australia) edge_pearl = Edge(pearl, 'visited', australia, properties={'purpose': 'business'}) redis_graph.add_edge(edge_pearl) redis_graph.commit() print('') for i in ['pleasure', 'business']: print('==== Purpose: {} ===='.format(i)) query = f'''MATCH (p:person)-[v:visited {{purpose:"{i}"}}]->(c:country) RETURN p.name, p.age, p.gender, p.status, c.name''' result = redis_graph.query(query) print_res(result) print('') if __name__ == '__main__': exit(main())