Hola, estoy tratando de conectar dos nodos de diferentes clases y por alguna razón me está dando este error -> neo4j.exceptions.CypherSyntaxError: {código:
Esta es la función que conecta 2 nodos de diferentes clases, los nodos existen.
def Lives_inRelationship(name, num):
session = graphdb.session()
session.run("MATCH (" + name + ":person {name:'" + name + "'}), ("+num+":Apartment {number:'" + num + "'})"
"MERGE (" + name + ")-[:Lives_in]->(" + num + ")")
Lives_inRelationship(“Chandler”,”19″) genera la excepción:
neo4j.exceptions.CypherSyntaxError: {code: Neo.ClientError.Statement.SyntaxError} {message: Invalid input '19': expected "(", "allShortestPaths" or "shortestPath" (line 1, column 45 (offset: 44))
"MATCH (Chandler:person {name:'Chandler'}), (19:Apartment {number:'19'})MERGE (Chandler)-[:Lives_in]->(19)"
^}
davy.ai
Pregunta
¿Qué está causando el error de sintaxis en la función Lives_inRelationship y cómo se puede corregir?
Respuesta
El error de sintaxis se debe a que el segundo parámetro
num
no está siendo formateado correctamente como una cadena al construir la consulta Cypher. Esto se debe a quename
está siendo correctamente encerrado entre comillas ("
) peronum
no. Como resultado, la consulta interpretanum
como un valor entero, en lugar de una cadena literal.Para solucionar este problema,
num
debe estar correctamente encerrado entre comillas en la consulta Cypher. Una manera de hacer esto es modificar la declaraciónsession.run
para incluir una serie adicional de comillas alrededor denum
usando el operador+
:Esto asegurará que
num
esté formateado correctamente como una cadena en la consulta Cypher, y debería resolver el error de sintaxis que está causando la excepción.