0
Если я запускаю мой питон скрипт по базе данных Neo4j, работает нормально:Neo4j - py2neo - Невозможно установить параметры в relatinoship по созданию
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()
, но, когда я пытался добавить параметры отношений ...:
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()
Я получил это:
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
Как я должен поместить эти переменные, чтобы избежать этого ошибки? Спасибо заранее.
Вы ввели параметры для '' Ā' и b' в конце запроса, но не добавили 'z' или' x'. Просто добавьте их. – InverseFalcon
У вас абсолютно прав, тестировав несколько минут назад, я был в состоянии это сделать. Извините, пожалуйста. Но другая вещь, которую я пытаюсь сделать, - это ввести в качестве параметра Обозначение отношения, в данном случае «KNOWS», не будет работать даже в том случае, если в конце запроса. –
В этом случае может быть хорошей идеей использовать конкатенацию строк для динамического добавления типа отношения в запрос. В качестве альтернативы, если вы устанавливаете процедуры APOC, вы можете se [apoc.create.relationship()] (https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_creating_data), чтобы создать связь вместо использования CREATE. Это позволит вам указать строку для типа отношений. – InverseFalcon