Результат SQLAlchemy для столбца UTF-8 имеет тип 'str', почему?

У меня есть SQL-запрос, который я выполняю следующим образом с механизмом SQLAlchemy:

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

База данных - MySQL, а тип столбца - TEXT с кодировкой UTF-8. Тип возвращаемого utf_8_field - «str», даже если я установил параметр convert_unicode = True при создании движка. Что происходит сейчас, так это то, что если у меня есть такой персонаж, как & quot; & xE9; & ap; в моей строке (которой нет в 7-битном ASCII, но в расширенном наборе ASCII), я получаю UnicodeDecodeError при попытке выполнить это:

utf_8_field.encode("utf-8")

Точная ошибка:

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

Посмотрев на это, я обнаружил, что str.encode не поддерживает расширенный набор символов ASCII! Я нахожу это действительно странным, но это другой вопрос.

Что я не понимаю, так это то, почему SQLAlchemy не дает мне строку Юникода. Ранее я использовал DB-API, и это работало нормально. У меня также нет табличных объектов SQLAlchemy для моих таблиц, поэтому я использую команду execute.

Любая идея?

Ответы на вопрос(2)

Ваш ответ на вопрос