This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from py2neo import Graph, Node, Relationship | |
class NodeCreator: | |
def __init__(self): | |
''' | |
Start off my creating the graph connection | |
If you're making a new Node label define it here, along with it's abbreviation | |
''' | |
#CHANGE ME TO WHATEVER YOURS IS | |
self.graph = Graph(password="password") | |
self.Node_Label = "" | |
self.Node_abrev = "" | |
self.node_fields = [] | |
self.Plugin_name = "" | |
self.node_key_field = "" | |
def create_or_update(self, key, data=None): | |
""" | |
Method to create or update a node. | |
:param key: THe unique key value that you want to add or update | |
:param data: The data that you want to be added to the node | |
:return: | |
""" | |
node = self.graph.find_one(self.Node_Label, 'id', key) | |
if node is None: | |
self.create_node(key,data) | |
else: | |
self.update_node(data=data, key=key) | |
def create_node(self, key, data=None): | |
""" | |
Method to add a new node to the graph database | |
:param key: The unique key value that you want to use to add | |
:param data: The data you want to add | |
:return: | |
""" | |
if data is None: | |
node = Node(self.Node_Label, id=key) | |
print 'creating node %s' % key | |
else: | |
node = Node(self.Node_Label, id=key) | |
node.update(data) | |
self.graph.create(node) | |
def update_node(self,data, key): | |
node = self.graph.find_one(self.Node_Label, 'id', key) | |
node.update(data) | |
class RelationshipMaker: | |
def __init__(self): | |
''' | |
Start off my creating the graph connection | |
If you're making a new Node label define it here, along with it's abbreviation | |
''' | |
self.graph = Graph(password="password") | |
self.Relationship_Label = "" | |
self.node_fields = [] | |
self.Plugin_name = "" | |
self.Bidirectional = False | |
self.from_node_type = "" | |
self.to_node_type = "" | |
def make_relationship(self, from_node, to_node, data=None): | |
relationship = self.Relationship_Label | |
print 'search for %s' % to_node | |
from_nodes = self.graph.find_one(self.from_node_type, 'id', from_node) | |
end_node = self.graph.find_one(self.to_node_type, 'id', to_node) | |
print "found %s" % from_nodes | |
print "found end: %s" % end_node | |
if from_nodes != None and end_node != None: | |
rel = Relationship(from_nodes, relationship, end_node) | |
if data: | |
for key, value in data.iteritems(): | |
rel[key] = value | |
self.graph.create(rel) | |
else: | |
print "failed to find %s" % from_node |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment