2017-02-07 2 views
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 

Как я должен поместить эти переменные, чтобы избежать этого ошибки? Спасибо заранее.

+1

Вы ввели параметры для '' Ā' и b' в конце запроса, но не добавили 'z' или' x'. Просто добавьте их. – InverseFalcon

+0

У вас абсолютно прав, тестировав несколько минут назад, я был в состоянии это сделать. Извините, пожалуйста. Но другая вещь, которую я пытаюсь сделать, - это ввести в качестве параметра Обозначение отношения, в данном случае «KNOWS», не будет работать даже в том случае, если в конце запроса. –

+0

В этом случае может быть хорошей идеей использовать конкатенацию строк для динамического добавления типа отношения в запрос. В качестве альтернативы, если вы устанавливаете процедуры APOC, вы можете se [apoc.create.relationship()] (https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_creating_data), чтобы создать связь вместо использования CREATE. Это позволит вам указать строку для типа отношений. – InverseFalcon

ответ

0

Параметры не могут быть использованы в качестве имен свойств, типов отношений и этикетки :( link,

Смежные вопросы