SQLAlchemy résultat pour l'UTF-8 de la colonne est de type 'str', pourquoi?

J'ai une requête SQL que j'exécute comme ça avec un SQLAlchemy moteur:

result = engine.execute('SELECT utf_8_field FROM table')

La base de données est MySQL et le type de colonne est le TEXTE avec l'encodage UTF-8. Le type de retour de la utf_8_field est "str", même si j'ai mis l'option convert_unicode=True lors de la création du moteur. Ce qui arrive maintenant est que si j'ai un caractère comme 'é' dans ma chaîne de caractères (ce qui n'est pas en ASCII 7 bits, mais est dans l'ASCII étendu set), je reçois un UnicodeDecodeError lorsque vous tentez d'exécuter ceci:

utf_8_field.encode("utf-8")

L'erreur exacte est:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 1: ordinal not in range(128)

Lors de la recherche dans ce, j'ai trouvé que str.encoder ne prennent pas en charge le jeu de caractères ASCII étendu! Je trouve cela vraiment étrange, mais c'est une autre question.

Ce que je ne comprends pas, c'est pourquoi SQLAlchemy ne me donne pas une chaîne unicode. J'étais auparavant à l'aide de DB-API et qui fonctionnait bien. Je n'ai pas aussi SQLAlchemy objets de la table pour mes tables encore, c'est pourquoi je suis à l'aide d'une commande execute.

Une idée?

InformationsquelleAutor Faelenor | 2012-05-30