Owen
Owen

Reputation: 169

Node added to neo4j DB but prints out as "None"

I have the following code:

import py2neo
from py2neo import Graph, Node, Relationship

def createRelationshipWithProperties():
    print("Start - Creating Relationships")
    # Authenticate the user using py2neo.authentication
    # Ensure that you change the password 'sumit' as per your database configuration.
    py2neo.authenticate("localhost:7474", "neo4j", "")
    # Connect to Graph and get the instance of Graph
    graph = Graph("http://localhost:7474/db/data/")
    # Create Node with Properties
    amy = Node("FEMALE", name="Amy")
    # Create one more Node with Properties
    kristine = Node("FEMALE",name="Kristine")
    # Create one more Node with Properties
    sheryl = Node("FEMALE",name="Sheryl")

    kristine_amy = Relationship(kristine,"FRIEND",amy,since=2005)
    print (kristine_amy)
    amy_sheryl = Relationship(sheryl,("FRIEND"),amy,since=2001)

    #Finally use graph Object and Create Nodes and Relationship
    #When we create Relationship between, then Nodes are also created. 
    resultNodes = graph.create(kristine_amy)
    resultNodes1 = graph.create(amy_sheryl)
    #Print the results (relationships)
    print("Relationship Created - ",resultNodes)
    print("Relationship Created - ",resultNodes1)

if __name__ == '__main__':
    createRelationshipWithProperties()

The resultsNodes = graph.create line seems to commit the nodes and relationships to the server because I can see them when I match(n) Return n. However, when the code prints resultsNodes, I get None as if they don't exist. This is the output that I get:

Start - Creating Relationships
(kristine)-[:FRIEND {since:2005}]->(amy)
Relationship Created -  None
Relationship Created -  None

Upvotes: 0

Views: 92

Answers (1)

Nigel Small
Nigel Small

Reputation: 4495

You're using the API incorrectly. The create method doesn't return nodes but instead updates the supplied argument. Therefore to get the relationship nodes, you need to interrogate the relationship object after performing the create.

Upvotes: 1

Related Questions