0
Wenn ich meine Python-Skript über Neo4j Datenbank ausführen, funktioniert ok:Neo4j - py2neo - Parameter können nicht in relatinoship auf Schöpfung platzieren
from py2neo import Node, Relationship, Graph, cypher, authenticate # set up authentication parameters authenticate("localhost:7474", "user", "password") # connect to authenticated graph database sgraph = Graph("http://localhost:7474/db/data/") a=raw_input("Input Name A: ") b=raw_input("Input Name B: ") graph = Graph() tx = graph.cypher.begin() tx.append("MATCH (c:Person {name:{a}}), (d:Person {name:{b}}) CREATE (c)-[:KNOWS}]->(d)", a=a, b=b) tx.commit()
aber, als ich versuchte, Parameter Beziehung hinzufügen ...:
a=raw_input("Input Name A: ")
b=raw_input("Input Name B: ")
z=raw_input("Input parameter of relationship z: ")
x=raw_input("Input parameter of relationship x: ")
graph = Graph()
tx = graph.cypher.begin()
tx.append("MATCH (c:Person {name:{a}}), (d:Person {name:{b}}) CREATE (c)-[:KNOWS{labelz:{z},labelx:{x}}]->(d)", a=a, b=b)
tx.commit()
ich habe dies:
tx.commit() File "/usr/local/lib/python2.7/dist-packages/py2neo/cypher/core.py", line 333, in commit return self.post(self.__commit or self.__begin_commit) File "/usr/local/lib/python2.7/dist-packages/py2neo/cypher/core.py", line 288, in post raise self.error_class.hydrate(error) py2neo.cypher.error.statement.ParameterMissing: Expected a parameter named z
Wie muss ich diese Variablen platzieren zu vermeiden, dass eine Fehlermeldung? Vielen Dank im Voraus.
Sie haben die Parameter zur Verfügung gestellt für 'a' und 'b' am Ende der Abfrage, aber Sie habe nicht 'z' oder' x' angegeben, sondern einfach auf. – InverseFalcon
Wir haben absolut recht, ich habe es vor ein paar Minuten getestet, aber ich habe es geschafft als Parameter das Label der Beziehung, „weiß“, in diesem Fall wird einschließlich am Ende der Abfrage nicht einmal arbeiten. –
in diesem Fall könnte es eine gute Idee sein, die String-Verkettung zu verwenden, um dynamisch den Beziehungstyp in die hinzufügen Wenn Sie APOC-Prozeduren installieren, können Sie u se [apoc.create.relationship()] (https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_creating_data), um die Beziehung zu erstellen, anstatt CREATE zu verwenden. Dadurch können Sie eine Zeichenfolge für den Beziehungstyp angeben. – InverseFalcon