1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    mars 2013
    Messages
    384
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2013
    Messages : 384
    Points : 147
    Points
    147

    Par défaut [Neo4J] Erreur de syntaxe incomprise

    Bonjour,

    Je débute en Neo4j et Cypher et j'utilise python pour y créer des noeuds et des relations.
    J'ai un problème de répétitions dans mon code, du coup, je veux faire une boucle et c'est là que ça dérape.

    Mon but est d'ajouter des propriétés à un noeud avec MATCH et SET. J'ai un exemple qui marche avec Cypher :
    MATCH (n) SET n +={cb: "Alicia", ca: "coco"}
    sachant que n a été créé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    ### PLACE 
            try:
                place = cds["place"]["normalized"]
                cypher_query = cypher_query + "\n (cds)-[:place]->(p:Place {name: {placeName}, title: {placeTitle}})"
                cypher_query = cypher_query + "\n WITH (p) \n MATCH (p) SET p+={"
                feed_dict["placeName"] = place
                feed_dict["placeTitle"] = place
    
                # properties
                #-------------------------------------------
                L = ["syntacticType","human","gender","number","groupType","namedEntityType","core"]
                L2 = ["syntacticType_p","human_p","gender_p","number_p","groupType_p","namedEntityType_p","core_p"]
    
                item = "place"
                for c in L:
                    c = cds[item][c]
                    n = L.index(c)
                    #b = L2[n] récupérer contenu L2 avec l'index
                    #print("*********************************** %s" % c)
                    cypher_query = cypher_query + " c: b,"
                    print(cypher_query)
                    
                    feed_dict[b] = L2[n]
                print(cypher_query)       
                cypher_query = cypher_query[:-1]
                cypher_query = cypher_query + "}," #la virgule va être supprimée à la fin
    
                print(cypher_query)
            except:
                    print()
    L'erreur que j'ai est :
    neo4j.exceptions.CypherSyntaxError: Unexpected end of input: expected whitespace or an expression (line 10, column 19 (offset: 1204))

    " MATCH (p) SET p+="

    J'ai la même erreur, même en ajoutant WITH (p) avant le MATCH.

    Merci

  2. #2
    Expert Oracle confirmé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    mars 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : mars 2003
    Messages : 343
    Points : 663
    Points
    663

    Par défaut

    Bonjour,

    Difficile de vous aider, car on n'a qu'un tout petit bout de la requête.

    Sous Python, il faudrait afficher dans la console la requête complète (donc afficher le contenu de la variable cypher_query) pour savoir ce qui a été envoyé à la base Neo4j, car il doit y avoir une erreur de syntaxe.

    En fait, la bonne méthode, c'est d'avoir un mini jeu de données sous Neo4j, écrire et mettre au point la requête pour qu'elle fonctionne sous Neo4j, puis coder tout cela en Python pour générer dynamiquement la requête Cypher.

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    mars 2013
    Messages
    384
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2013
    Messages : 384
    Points : 147
    Points
    147

    Par défaut

    Merci pour votre réponse.

    Finalement, j'ai trouvé le moyen de ne pas diviser ma requête et de faire une boucle sur les données en dehors de la requête.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Directives] Page blanche quand erreur de syntaxe
    Par syl2095 dans le forum Outils
    Réponses: 12
    Dernier message: 17/02/2006, 15h15
  2. [sql] erreur de syntaxe
    Par cmoa59 dans le forum JDBC
    Réponses: 14
    Dernier message: 03/05/2005, 11h41
  3. erreur de syntaxe en C++
    Par sergepmessa dans le forum C++
    Réponses: 6
    Dernier message: 11/03/2005, 18h15
  4. PHP SQL =>erreur de syntaxe (operateur absent)
    Par snipes dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 14h09
  5. erreur de syntaxe javascript dans ma page
    Par Oluha dans le forum JavaScript
    Réponses: 7
    Dernier message: 01/02/2005, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo