Das SQLAlchemy-Ergebnis für die UTF-8-Spalte ist vom Typ 'str'. Warum?

Ich habe eine SQL-Abfrage, die ich mit einer SQLAlchemy-Engine wie folgt ausführe:

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

Die Datenbank ist MySQL und der Spaltentyp ist TEXT mit UTF-8-Codierung. Der Typ des zurückgegebenen utf_8_field ist "str", auch wenn ich beim Erstellen der Engine die Option convert_unicode = True gesetzt habe. Was jetzt passiert ist, dass wenn ich ein Zeichen wie 'é' in meinem String habe (das nicht in 7-Bit-ASCII ist, sondern in der erweiterten ASCII-Menge), ich einen UnicodeDecodeError bekomme, wenn ich versuche, dies auszuführen:

utf_8_field.encode("utf-8")

Der genaue Fehler ist:

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

Als ich dies untersuchte, stellte ich fest, dass str.encode den erweiterten ASCII-Zeichensatz nicht unterstützt! Ich finde das wirklich seltsam, aber das ist eine andere Frage.

Was ich nicht verstehe, ist, warum SQLAlchemy mir keine Unicode-Zeichenfolge gibt. Ich habe zuvor DB-API verwendet und das hat gut funktioniert. Ich habe auch noch keine SQLAlchemy-Tabellenobjekte für meine Tabellen. Deshalb verwende ich einen Ausführungsbefehl.

Irgendeine Idee?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage