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 :

encode et decode


Sujet :

Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut encode et decode
    Bonjour,

    Après le longues années sans programmer, je me suis mis à Python 2.6 et sqlite depuis 2 jours en suivant le tutoriel Swinnen.
    Je trouve ce langage super et je suis bluffé par ce qu'on peut faire avec si peu de lignes ! L'exercice de l'oscilloscope est ENORME !!

    Tout ça pour dire que je suis mega débutant. Je vous expose mon problème :

    J'arrive à lire des fichier et créer une base de donnée , insérer et lire les valeurs.

    Mais lorsque j'essai d'importer les données depuis un fichier csv dans lequel il y a du texte en bon français ça plante et cela me dit :

    ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.

    J'ai bien sûr essayé de chercher sur le forum et sur google mais je ne comprend rien !! à ce histoires de code, decode, utf8, ...

    Je ne peux pas importer tel quel mon texte dans sqlite pour le relire ensuite via ma future application ?

    voici mon code , ce serait sympa si quelqu'un pouvait m'éclairer un peu svp :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    #! /usr/bin/env python
    #-*- coding: utf-8 -*-
     
    from os import chdir
    import sqlite3
    import csv
     
    # Ouverture fichier à plat
     
    chdir("G:/__Prog/Quizz/bdd")
    fic_liste = open('liste.csv','r')
    csv.field_size_limit(100000)            #see below!
    ligne = fic_liste.readline()                                # lecture ligne nom champs
     
    input = csv.reader(fic_liste, delimiter=',')
     
    # Création base de donnée et table 
     
    conn = sqlite3.connect("G:/__Prog/Quizz/bdd/Quizz.sqlite")  # ouverture de la base
    c = conn.cursor()                                           # obtention d'un curseur
    try:
        c.execute("CREATE TABLE liste (proprio     VARCHAR (60),    \
                                       sujet       VARCHAR (60),   \
                                       theme       VARCHAR (60),   \
                                       type        VARCHAR (60),   \
                                       question    TEXT,           \
                                       reponse     TEXT,           \
                                       nb_qpos     INTEGER,        \
                                       nb_qok      INTEGER,        \
                                       nb_qko      INTEGER  )")
    except:
        c.execute("DROP TABLE liste")
        print "table BOMBEE"
        c.execute("CREATE TABLE liste (proprio     VARCHAR (60),    \
                                       sujet       VARCHAR (60),   \
                                       theme       VARCHAR (60),   \
                                       type        VARCHAR (60),   \
                                       question    TEXT,           \
                                       reponse     TEXT,           \
                                       nb_qpos     INTEGER,        \
                                       nb_qok      INTEGER,        \
                                       nb_qko      INTEGER  )")
        print "table cree"
     
    # Lecture séquentielle du fichier et chargement de la table
     
    l=0
    for item in input:
        l=l+1
        print "ligne ", l, " : ", item
        c.execute('INSERT into liste VALUES (?,?,?,?,?,?,?,?,?)', item ) 
     
    curse.commit()
    c.close()
    conn.close()
    Pour info, je sauvegarde le fichier csv avec OpenOffice qui me propose plein de formats mais je ne sais pas trop à quoi ça correspond et lequel prendre. J'ai pris celui par défaut en bleu :


  2. #2
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Question résummée
    Bonjour,

    Je continue à parcourir le forum mais j'avoue que j'ai toujours du mal à comprendre ces histoires de code/decode/unicode/utf ...

    Pour poser ma question différemment, si j'ai un texte de ce type dans un fichier csv sauvegardé à partir d'OpenOffice , exemple : " à côté ... près de ... "

    - comment je dois le sauvegarde depuis OpenOffice ?
    - j'ai le droit de l'importer dans sqlite3 ?

    Merci d'aider un "vieux" développeur car je suis bloqué là depuis hier.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Je n'y arrive toujours pas
    Je trouve ce lien super intéressant mais je n'y arrive toujours pas !!!

    J'ai essayé de sauvegarder les données en unicode et en UTF-8 depuis Open Office mais je n'arrive toujours par à importer dans sqlite3 et j'ai ceci au niveau de la console IDLE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ligne  1  :  ['doms', 'cycle m\xc3\xa9dicament', 'pharmacologie', 'Q', 'Citer au moins 5 classes t\xc3\xa9hrapeutiques', 'Antalgiques, Anti-inflammatoires, Canc\xc3\xa9rologie, Cardiologie, Cardiologie et angiologie, Dermatologie, Diagnostic, Endocrinologie, Gastro-ent\xc3\xa9rologie-h\xc3\xa9patologie, Gyn\xc3\xa9cologie, H\xc3\xa9matologie et h\xc3\xa9mostate, Immunologie, Infectiologie, M\xc3\xa9tabolisme et nutrition, Neurologie-psychiatrie, Ophtalmologie, Oto-Rhino-Laryngologie, Pneumologie, Psychiatrie, Rhumatologie, Stomatologie, Toxicologie, Urologie, N\xc3\xa9phrologie', '0', '0', '0']
    Traceback (most recent call last):
      File "G:\__Prog\Quizz\Charge_table_02.py", line 51, in <module>
        c.execute('INSERT into liste VALUES (?,?,?,?,?,?,?,?,?)', item )
    ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
    Comment importer ce genre de texte dans une base de donnée sqlite 3 ??

    Si quelqu'un sait faire, merci d'avance .

    Dominique.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut résolu
    Résolu via un post sur sqlite.
    Je pense pas que cela soit le plus optimisé mais ça marche.

    Si cela vous intéresse, voici le lien

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

Discussions similaires

  1. Websocket avec Encoder et Decoder
    Par mysianne dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 06/02/2015, 15h32
  2. [HTA] Encoder VBS2VBE & Decoder VBE2VBS
    Par hackoofr dans le forum Vos Contributions VBScript
    Réponses: 0
    Dernier message: 12/09/2012, 22h28
  3. encoder et decoder un objet Serailizable
    Par y_chafaqi dans le forum Langage
    Réponses: 2
    Dernier message: 22/09/2011, 10h27
  4. UTF8 : encode et decode
    Par diam's dans le forum Langage
    Réponses: 5
    Dernier message: 08/09/2010, 10h16
  5. Réponses: 21
    Dernier message: 27/03/2008, 13h28

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