Wynik SQLAlchemy dla kolumny UTF-8 jest typu „str”, dlaczego?

Mam zapytanie SQL, które wykonuję w ten sposób za pomocą silnika SQLAlchemy:

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

Baza danych to MySQL, a typ kolumny to TEXT z kodowaniem UTF-8. Typ zwróconego pola utf_8_field to „str”, nawet jeśli ustawię opcję convert_unicode = True podczas tworzenia silnika. Teraz, gdy mam znak taki jak „é” w moim ciągu (który nie jest w 7-bitowym ASCII, ale jest w rozszerzonym zestawie ASCII), otrzymuję błąd UnicodeDecodeError podczas próby wykonania tego:

utf_8_field.encode("utf-8")

Dokładny błąd to:

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

Patrząc na to, odkryłem, że str.encode nie obsługuje rozszerzonego zestawu znaków ASCII! Uważam to za bardzo dziwne, ale to kolejne pytanie.

Czego nie rozumiem, to dlaczego SQLAlchemy nie daje mi ciągu Unicode. Wcześniej korzystałem z DB-API i to działało dobrze. Nie mam jeszcze obiektów tabeli SQLAlchemy dla moich tabel, dlatego używam polecenia execute.

Dowolny pomysł?

questionAnswers(2)

yourAnswerToTheQuestion