Skip to content

Instantly share code, notes, and snippets.

@planglois925
Created September 8, 2018 13:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save planglois925/0d085cb017c66625a131bfa72c1b807b to your computer and use it in GitHub Desktop.
Save planglois925/0d085cb017c66625a131bfa72c1b807b to your computer and use it in GitHub Desktop.
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