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

Python Discussion :

Error dans mon code d'insertion dans la base


Sujet :

Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Error dans mon code d'insertion dans la base
    Bonjour tout le monde

    mon code consiste a lire une fichier text qui contient des tweets et a insérer certain attribut du tweet dans ma base de donnée sous mysql.

    J'ai plusieurs relations tweet_user, tweet_text et tweet_location, je block au niveau de la dernière Relation tweet_location qui contient 3 attribut (Id_location, geo_coordinates,

    id_tweet). Sachant que l'attribut geo_coordinate peux etre vide donc je veux que si c'est vide insérer une valeurs par défaut.

    Voisi le code mais ça marche pas ça me donne un code d'error!:


    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
    32
    33
    34
    35
    36
    import json
    import codecs
    import MySQLdb
    import _mysql
     
    db = MySQLdb.connect(host='', user="",passwd="",db="", charset='utf8', use_unicode=True)
    cur = db.cursor()
     
    sql_request='insert ignore into tweet_location (geo_coordinates,id_tweet) Values (%s,%s)'
     
    print 'hello'
    f = codecs.open("new1.txt",'r','utf-8')
    cpt = 0
    for line in f:
    	if len(line)< 10:
    		continue
    	print line
    	line = line.replace('\n','')
    	status = json.loads(line)
     
     
      if 'geo' in status.keys() and 'coordinates' in status['geo'].keys():        
      	geo_coordinates = status['geo']['coordinates']
      else:
            geo_coordinates = '36.584467, 3.185335'
    	cur.execute(sql_request,(status['geo']['coordinates'],status['id_str']))
     
    	print '=================='
    	cpt += 1
    	if cpt > 100000:
                  break
     
    db.commit()
    cur.close()
    db.close()
    f.close()
    Je sais pas à quel niveau ça va pas dans mon code! quelqu’un pourrai m'aider SVP

    Merci d'avance

    Salutations

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par baterfly Voir le message
    Voisi le code mais ça marche pas ça me donne un code d'error!:
    Si vous postiez le code d'erreur (qui devrait être un traceback) çà aiderait peut être à comprendre.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut code error
    File "insertLocation.py", line 25
    if 'geo' in status.keys() and 'coordinates' in status['geo'].keys():
    ^
    IndentationError: unindent does not match any outer indentation level

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    L'erreur te parle d'erreur d'indentation.

    La ligne incriminée a deux espaces d'indentation et Python ne comprend pas à quel niveau de bloc de code il doit l'interpréter.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut espace rétalie
    Voila le code rétablie au niveau des espace, mais ça marche pas tjrs!!

    ça me donne ça comme error:

    File "insertLocation.py", line 23
    if 'geo' in status.keys() and 'coordinates' in status['geo'].keys():
    ^
    IndentationError: unexpected indent



    Code python
    :
    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
    import json
    import codecs
    import MySQLdb
    import _mysql
     
     
    db = MySQLdb.connect(host='127.0.0.1', user="root",passwd="mysql",db="tweetdb", charset='utf8', use_unicode=True)
    cur = db.cursor()
    sql_request='insert ignore into tweet_location (geo_coordinates,id_tweet) Values (%s,%s)'
    print 'hello'
    f = codecs.open("new1.txt",'r','utf-8')
    cpt = 0
    for line in f:
    	if len(line)< 10:
    		continue
    	print line
    	line = line.replace('\n','')
    	status = json.loads(line)
    	cur.execute(sql_request,(status['geo']['coordinates'],status['id_str']))
    		if 'geo' in status.keys() and 'coordinates' in status['geo'].keys():        
      			geo_coordinates = status['geo']['coordinates']
            	else:
            		geo_coordinates = '36.584467, 3.185335'
    	print '=================='
    	cpt += 1
    	if cpt > 100000:
    		break
    db.commit()
    cur.close()
    db.close()
    f.close()

  6. #6
    Membre régulier
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 75
    Points : 103
    Points
    103
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	cur.execute(sql_request,(status['geo']['coordinates'],status['id_str']))
    		if 'geo' in status.keys() and 'coordinates' in status['geo'].keys():        
      			geo_coordinates = status['geo']['coordinates']
            	else:
            		geo_coordinates = '36.584467, 3.185335'
    Si tu regardes bien ton code, tu constateras que ton if/else ligne 20 à 23 subit une indentation alors qu'il n'y a pas lieu d'en faire une.

    Note: Lorsque tu fais ton indentation choisis entre tabulation ou espace mais évite de faire les deux car, ça peut te créer des erreurs dans certains cas

    Correction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cur.execute(sql_request,(status['geo']['coordinates'],status['id_str']))
    if 'geo' in status.keys() and 'coordinates' in status['geo'].keys():        
        geo_coordinates = status['geo']['coordinates']
    else:
        geo_coordinates = '36.584467, 3.185335'

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Bonjour

    Merci papyfouette, je viens de corriger mais j'ai une autre erreur

    File "insertLocation.py", line 28
    print '=================='
    ^
    IndentationError: unexpected indent


    Une idée svp?

  8. #8
    Membre régulier
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 75
    Points : 103
    Points
    103
    Par défaut
    Bonjour,

    Pars du principe que si ton erreur est la même, c'est que ton print est aussi en erreur d'indentation.

    Après ton else: mets également 4 espaces ou une tabulation pour ton print et les 2/3 lignes du dessous.

    EDIT: Vu que j'ai acces à un pc je peux te copier la correction, pas facile avec un téléphone:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    else:
        geo_coordinates = '36.584467, 3.185335'
        cur.execute(sql_request,(status['geo']['coordinates'],status['id_str']))
     
        print '=================='
        cpt += 1
        if cpt > 100000:
            break
     
    db.commit()
    cur.close()
    db.close()
    f.close()

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/07/2013, 20h51
  2. Parse error dans mon code
    Par feugana1 dans le forum Langage
    Réponses: 3
    Dernier message: 09/08/2010, 12h12
  3. Réponses: 2
    Dernier message: 03/05/2007, 09h00
  4. Réponses: 1
    Dernier message: 21/02/2005, 12h40
  5. [langage] algo de bissection dans mon code
    Par killy dans le forum Langage
    Réponses: 5
    Dernier message: 19/01/2004, 18h35

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