You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.0 KiB
54 lines
2.0 KiB
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())
|
|
|