2013-08-22 7 views
0

py2neo를 사용하여 Neo4j 데이터베이스에서 데이터를 덤프합니다. 나도 같은 배치 내에서 새로운 노드를 사용하여 관계를 만들 수 있습니다이Py2neo - writebatch에서 관계 생성

batch = neo4j.WriteBatch(graph_db) 
batch.create(node(name="Alice")) 
batch.create(node(name="Bob")) 
batch.create(rel(0, "KNOWS", 1)) 
results = batch.submit() 

. 난 이미이 같은 일괄 이전에 생성 된 노드와의 관계를 만들려고하면

그러나 :

n = graph_db.create({"name": "Smith"}) 
batch = neo4j.WriteBatch(graph_db) 
batch.create(node(name="Alice")) 
batch.create(rel(0, "KNOWS", n)) 
results = batch.submit() 

이 * 실패합니다. 이전에 생성 된 노드에 배치 내의 관계가있는 노드를 어떻게 만들 수 있습니까? py2neo 1.5.1 및 Neo4j 1.9.2

감사를 사용

  • 오류 메시지가 :
코드의 예에서

SystemError: {u'stacktrace': [u'org.neo4j.server.rest.batch.NonStreamingBatchOperations.invoke(NonStreamingBatchOperations.java:63)', u'org.neo4j.server.rest.batch.BatchOperations.performRequest(BatchOperations.java:188)', u'org.neo4j.server.rest.batch.BatchOperations.parseAndPerform(BatchOperations.java:159)', u'org.neo4j.server.rest.batch.NonStreamingBatchOperations.performBatchJobs(NonStreamingBatchOperations.java:48)', u'org.neo4j.server.rest.web.BatchOperationService.batchProcess(BatchOperationService.java:117)', u'org.neo4j.server.rest.web.BatchOperationService.performBatchOperations(BatchOperationService.java:72)', u'java.lang.reflect.Method.invoke(Method.java:606)', u'org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)'], u'message': u'{\n "message" : "For input string: \"5078\')]}\"",\n "exception" : "BadInputException",\n "fullname" : "org.neo4j.server.rest.repr.BadInputException",\n "stacktrace" : [ "org.neo4j.server.rest.web.RestfulGraphDatabase.extractNodeId(RestfulGraphDatabase.java:171)", "org.neo4j.server.rest.web.RestfulGraphDatabase.createRelationship(RestfulGraphDatabase.java:410)", "java.lang.reflect.Method.invoke(Method.java:606)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)", "org.neo4j.server.web.Jetty6WebServer.invokeDirectly(Jetty6WebServer.java:302)", "org.neo4j.server.rest.batch.NonStreamingBatchOperations.invoke(NonStreamingBatchOperations.java:55)", "org.neo4j.server.rest.batch.BatchOperations.performRequest(BatchOperations.java:188)", "org.neo4j.server.rest.batch.BatchOperations.parseAndPerform(BatchOperations.java:159)", "org.neo4j.server.rest.batch.NonStreamingBatchOperations.performBatchJobs(NonStreamingBatchOperations.java:48)", "org.neo4j.server.rest.web.BatchOperationService.batchProcess(BatchOperationService.java:117)", "org.neo4j.server.rest.web.BatchOperationService.performBatchOperations(BatchOperationService.java:72)", "java.lang.reflect.Method.invoke(Method.java:606)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)" ],\n "cause" : {\n "message" : "For input string: \"5078\')]}\"",\n "exception" : "NumberFormatException",\n "stacktrace" : [ "java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)", "java.lang.Long.parseLong(Long.java:441)", "java.lang.Long.parseLong(Long.java:483)", "org.neo4j.server.rest.web.RestfulGraphDatabase.extractNodeId(RestfulGraphDatabase.java:167)", "org.neo4j.server.rest.web.RestfulGraphDatabase.createRelationship(RestfulGraphDatabase.java:410)", "java.lang.reflect.Method.invoke(Method.java:606)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)", "org.neo4j.server.web.Jetty6WebServer.invokeDirectly(Jetty6WebServer.java:302)", "org.neo4j.server.rest.batch.NonStreamingBatchOperations.invoke(NonStreamingBatchOperations.java:55)", "org.neo4j.server.rest.batch.BatchOperations.performRequest(BatchOperations.java:188)", "org.neo4j.server.rest.batch.BatchOperations.parseAndPerform(BatchOperations.java:159)", "org.neo4j.server.rest.batch.NonStreamingBatchOperations.performBatchJobs(NonStreamingBatchOperations.java:48)", "org.neo4j.server.rest.web.BatchOperationService.batchProcess(BatchOperationService.java:117)", "org.neo4j.server.rest.web.BatchOperationService.performBatchOperations(BatchOperationService.java:72)", "java.lang.reflect.Method.invoke(Method.java:606)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)" ],\n "fullname" : "java.lang.NumberFormatException"\n }\n}', u'fullname': u'org.neo4j.server.rest.domain.BatchOperationFailedException', u'exception': u'BatchOperationFailedException'}

답변

0

, n 실제로 노드의 목록이 포함됩니다 단일 노드가 아닙니다 (create 메서드의 경고 참조). 그래서, 대신 ...

n = graph_db.create({"name": "Smith"}) 

... 당신은 아마 싶어 ...

n, = graph_db.create({"name": "Smith"})