2016-10-10 1 views
0

J'ai cette requête Cypher dans un programme Python:Comment introduire des paramètres dans une requête chiffrée?

prevNode = graph_db.data("OPTIONAL MATCH (n:Node) WHERE n.property = {param} RETURN n") 

La ligne de code ci-dessus donne cette erreur:

'py2neo.database.status.ClientError: Expected a parameter named param'

PARAM est bien défini à ce stade du programme parce que j'imprimer une ligne avant d'exécuter la requête.

J'ai essayé de mettre la valeur dans la requête au lieu du paramètre, comme ceci:

prevNode = graph_db.data("OPTIONAL MATCH (n:Node) WHERE n.property = '1234' RETURN n") 

Et bien fonctionné.

Est-ce que quelqu'un sait où est l'erreur?

Merci d'avance.

Répondre

2

Vous n'avez transmis aucune variable de substitution dans la fonction.

graph_db.data("OPTIONAL MATCH (n:Node) WHERE n.property = {param} RETURN n", param='1234') 

Vous pouvez également transmettre explicitement dans le dictionnaire locals(); cela utilisera toutes les variables locales que vous avez définies des noms appropriés:

graph_db.data("OPTIONAL MATCH (n:Node) WHERE n.property = {param} RETURN n", **locals())