El resultado de SQLAlchemy para la columna UTF-8 es de tipo 'str', ¿por qué?

Tengo una consulta SQL que ejecuto así con un motor SQLAlchemy:

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

La base de datos es MySQL y el tipo de columna es TEXTO con codificación UTF-8. El tipo de utf_8_field devuelto es "str", incluso si configuro la opción convert_unicode = True al crear el motor. Lo que sucede ahora es que si tengo un carácter como 'é' en mi cadena (que no está en ASCII de 7 bits, pero está en el conjunto ASCII extendido), obtengo un UnicodeDecodeError cuando intento ejecutar esto:

utf_8_field.encode("utf-8")

El error exacto es:

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

Al analizar esto, ¡encontré que str.encode no admite el conjunto de caracteres ASCII extendido! Encuentro esto realmente extraño, pero esa es otra pregunta.

Lo que no entiendo es por qué SQLAlchemy no me da una cadena Unicode. Antes estaba usando DB-API y eso estaba funcionando bien. Tampoco tengo objetos de tabla SQLAlchemy para mis tablas, por eso estoy usando un comando de ejecución.

¿Alguna idea?

Respuestas a la pregunta(2)

Su respuesta a la pregunta