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

Bibliothèques tierces Python Discussion :

[sqlalchemy] et l'encodage


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre averti Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Points : 344
    Points
    344
    Par défaut [sqlalchemy] et l'encodage
    Bonjour,
    J'ai un problème d'encodage avec sqlalchemy
    J'insère un caractère avec accent il y a un message d'erreur,

    sqlalchemy.exceptions.OperationalError: (OperationalError) Could not decode to UTF-8 column 'name' with text 'andré' u'SELECT users.user_id, users.name \nFROM users' []

    auriez vous une idée (encodage...)

    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
     
     
    # -*- coding: iso-8859-1 -*-
    from sqlalchemy import *
    import os
    if os.path.exists('tutorial.db') : os.remove('tutorial.db')
     
    db = create_engine('sqlite:///tutorial.db')
     
    metadata = MetaData(db)
     
    users = Table('users', metadata,
        Column('user_id', Integer, primary_key=True),
        Column('name', String(40)))
    users.create()
     
    i = users.insert()
    i.execute(name='andré') #Si accent => message d'erreur 
     
    s = users.select()
    rs = s.execute()
     
    row = rs.fetchall()
     
    for row in rs:
        print row.name

  2. #2
    Membre averti Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Points : 344
    Points
    344
    Par défaut 'é'.decode('iso-8859-1') => unicode
    Il fallait simplement rajouter un décodage pour être en unicode

    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
     
     
    # -*- coding: iso-8859-1 -*-
    from sqlalchemy import *
    import os
    if os.path.exists('tutorial.db') : os.remove('tutorial.db')
     
    db = create_engine('sqlite:///tutorial.db')
     
    metadata = MetaData(db)
     
    users = Table('users', metadata,
        Column('user_id', Integer, primary_key=True),
        Column('name', String(40)))
    users.create()
     
    i = users.insert()
     
    i.execute(name='é'.decode('iso-8859-1')) #Si accent => Il n'y a plus de messages d'erreur 
     
    s = users.select()
    rs = s.execute()
     
    row = rs.fetchall()
     
    for row in rs:
        print row.name

Discussions similaires

  1. SqlAlchemy : lever une exception sur erreur d'encodage
    Par Sekigo dans le forum Général Python
    Réponses: 8
    Dernier message: 31/03/2013, 16h29
  2. Encodage de cd en fichier mp3
    Par clovis dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 08/04/2004, 01h13
  3. [ENCODAGE][JAVA]Afficher correctement des accents
    Par kornelius dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/02/2004, 16h37
  4. Encodages DOS et Windows
    Par Aramis dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2003, 17h55
  5. [VB6] fonction d' encodage URL en VB
    Par jeanseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2003, 11h16

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