Результат 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.
Любая идея?