Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Bibliothèques tierces
Bibliothèques tierces Forum d'entraide pour les autres bibliothèques non présentes dans la distribution standard de Python
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/06/2012, 11h44   #1
LinC49
Futur Membre du Club
 
Inscription : mai 2010
Messages : 62
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 62
Points : 15
Points : 15
Par défaut Erreur sqlalchemy lettre accentuée

Bonjour,

J'ai cette erreur qui survient à chaque appel de mes requêtes :

Code :
1
2
D:\Python26\lib\site-packages\sqlalchemy-0.7.3-py2.6.egg\sqlalchemy\engine\default.py:453: SAWarning: Unicode type received non-unicode bind param value
param.append(processors[key](compiled_params[key]))
Mes requêtes s'exécute bien si dans ma base il n'y a pas de lettre accentuée.

Sa viendrais qu'elixir/sqlalchemy est en ASCII. savez-vous quel est le parametrage d'elixir/sqlalchemy pour qu'il soit en utf8 ?

Je pense que c'est un paramètre qu'il faut écrire lors de la connection à la base.

Cordialement
LinC49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2012, 12h13   #2
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
Salut,

client encoding est un paramètre de la connexion à passer dans la construction de l'engine (ou de la metadata). Sa formulation dépend du type de la BDD voire du driver.

- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2012, 14h30   #3
LinC49
Futur Membre du Club
 
Inscription : mai 2010
Messages : 62
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 62
Points : 15
Points : 15
J'utilise une BDD de type Mysql, j'ai formulé ma connexion comme suite sachant que j'utilise elixir:

Code :
1
2
metadata.bind = "mysql://user:mdp@host/nomBDD"
using_options_defaults(shortnames=True, convert_unicode=True, encoding="utf8")
Mais rien ny fait ma BDD est bien créer, mais le warning est toujours là et du coup pas de possibilité de lire ou d'inserer des lettres accentuées.

si vous avez l'écriture exacte de la connexion je suis preneuse.
Merci

Cordialement
LinC49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2012, 18h23   #4
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
Salut,

Elixir est quelque peu devenu obsolete depuis que SQLAlchemy a intégré une interface declarative.
MySQL est la BDD et non le driver DBAPI installé côté Python pour travailler avec.

Dans la documentation du dialect MySQL, vous trouverez la façon de préciser "utf-8" en utilisant charset et use_unicode pour les différents "drivers".

Bon courage,

- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2012, 08h30   #5
LinC49
Futur Membre du Club
 
Inscription : mai 2010
Messages : 62
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 62
Points : 15
Points : 15
Bonjour wiztricks,

J'avais bien lu cette doc et passée ma connection ainsi :

Code :
1
2
metadata.bind = "mysql://user:mdp@host/nomBDD"charset=utf8&use_unicode=0
using_options_defaults(shortnames=True, convert_unicode=True, encoding="utf8")
pas de résultat. Est ce que chaque class doit avoir le paramètre charset et unicode??
Code :
1
2
3
4
5
6
7
8
9
class Document_Hermione(Document, charset=utf8, unicode=0 ??):
    using_options(inheritance='multi', tablename = "Document_Hermione")
    Commentaire_DocH = Field (Unicode(255), nullable = False)
    BoolDocM = Field (Boolean, nullable = False)
    TypeDoc = ManyToOne ("Type_Doc")
    Attribution = OneToMany("Attribution")
    Nature = ManyToOne ("Nature_Doc")
    Etat = ManyToOne ("Etat_Doc")
    DocV=OneToMany("Doc_Version")
LinC49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h54.


 
 
 
 
Partenaires

Hébergement Web