Neo.Ошибка.Заявление.ParameterMissing} {сообщение: ожидаемые параметры: username_} с помощью Python

#python #neo4j

#python #neo4j

Вопрос:

У меня есть следующая функция и следующий вызов (с настройкой соединения перед ним)

 from  neo4j import GraphDatabase
from pypher import Pypher
# from WebScraper import *
py = Pypher()
# server connection link
uri = "bolt://localhost:7687"
driver = GraphDatabase.driver(uri, auth=("neo4j", "cs411fpl"))
session = driver.session()
username = 'a'
varray = []
# adds a user node
def add_user(username_):
    q1 = "CREATE (u:User) SET u.name= $username_"
    nodes = session.run(q1)

add_user(username)
 

Это приводит к ошибке:

 File "UserHandler.py", line 37, in <module>
    add_user(username)
  
File "UserHandler.py", line 14, in add_user
    nodes = session.run(q1)
  
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/neo4j/work/simple.py", line 217, in run
    self._autoResult._run(query, parameters, self._config.database, self._config.default_access_mode, self._bookmarks, **kwparameters)
  
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/neo4j/work/result.py", line 101, in _run
    self._attach()
  
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/neo4j/work/result.py", line 202, in _attach
    self._connection.fetch_message()
  
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/neo4j/io/_bolt4.py", line 363, in fetch_message
    response.on_failure(summary_metadata or {})
  
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/neo4j/io/_common.py", line 179, in on_failure
    raise Neo4jError.hydrate(**metadata)

neo4j.exceptions.ClientError: {code: Neo.ClientError.Statement.ParameterMissing} {message: Expected parameter(s): username_}
 

Любые предложения были бы замечательными. Спасибо!

Ответ №1:

Вам не хватает соединения между Cypher и Python (второй аргумент run ). Недостаточно, чтобы оба места были написаны username_ одинаково.

 def add_user(username_):
    q1 = "CREATE (u:User) SET u.name= $username_"
    nodes = session.run(q1, username_=username_)
 

Я думаю, что следующее также будет работать, обратите внимание, как второй аргумент для run должен описывать связь между Cypher и Python:

 def add_user(username_):
    q1 = "CREATE (u:User) SET u.name= $login"
    nodes = session.run(q1, login=username_)
 

Возможно, вы сможете найти больше здесь:
https://neo4j.com/developer/python /