IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NoSQL Discussion :

[Neo4J] Erreur de syntaxe incomprise


Sujet :

NoSQL

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    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
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Points : 926
    Points
    926
    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
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    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 EDI, CMS, Outils, Scripts et API
    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 Général 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