Я получаю сообщение об ошибке при получении моих двоичных данных из базы данных Mysql с помощью SqlAlchemy - PullRequest
0 голосов
/ 14 января 2019

Я столкнулся с проблемой. Здесь у меня есть эта модель в моей SqlAlchemy

class ConfigArchive(Base):
    __tablename__ = 'config_archives'

    cluster_id = Column(String(SIZE_TEXT),
                        ForeignKey('clusters.cluster_id'),
                        primary_key=True,
                        index=True,
                        unique=True,
                        nullable=False)
    config_blob = Column(Binary,
                         nullable=False)

Тогда я получаю свои двоичные данные, используя фильтры как:

config_archive = self.session.query(ConfigArchive) \
            .filter(ConfigArchive.cluster_id == cluster_id).one_or_none()

И тут я получил ошибку вроде:

...

Файл ".Venv / Библиотека / python2.7 / сайт-пакеты / SQLAlchemy / ОРМ / query.py", строка 2924, в one_or_none ret = list (self) Файл ".venv / lib / python2.7 / site-packages / sqlalchemy / orm / query.py", строка 2995, в iter вернуть файл self._execute_and_instances (context) Файл ".venv / lib / python2.7 / site-packages / sqlalchemy / orm / query.py", строка 3018, в _execute_and_instances result = conn.execute (querycontext.statement, self._params) Файл ".venv / lib / python2.7 / site-packages / sqlalchemy / engine / base.py", строка 948, в исполнении вернуть meta (self, multiparams, params) Файл ".venv / lib / python2.7 / site-packages / sqlalchemy / sql / elements.py", строка 269, в _execute_on_connection вернуть файл connection._execute_clauseelement (self, multiparams, params) Файл ".Venv / Lib / python2.7 / сайт-пакеты / SQLAlchemy / двигатель / base.py", строка 1060, в _execute_clauseelement compiled_sql, файл дистиллированных_парамов ".venv / lib / python2.7 / site-packages / sqlalchemy / engine / base.py", строка 1200, в _execute_context контекст) Файл ".venv / lib / python2.7 / site-packages / sqlalchemy / engine / base.py", строка 1416, в _handle_dbapi_exception util.reraise (* exc_info) Файл ".venv / lib / python2.7 / site-packages / sqlalchemy / engine / base.py", строка 1193, в _execute_context контекст) Файл ".venv / lib / python2.7 / site-packages / sqlalchemy / engine / default.py", строка 509, в do_execute cursor.execute (оператор, параметры) Файл ".venv / lib / python2.7 / site-packages / mysql / connector / cursor_cext.py", строка 272, в исполнении self._handle_result (result) Файл ".venv / lib / python2.7 / site-packages / mysql / connector / cursor_cext.py", строка 163, в _handle_result self._handle_resultset () Файл ".venv / lib / python2.7 / site-packages / mysql / connector / cursor_cext.py", строка 651, в _handle_resultset self._rows = self._cnx.get_rows () [0] Файл ".venv / lib / python2.7 / site-packages / mysql / connector / connection_cext.py", строка 288, в get_rows _eof = self.fetch_eof_columns () ['eof'] Файл ".venv / lib / python2.7 / site-packages / mysql / connector / connection_cext.py", строка 349, в fetch_eof_columns для полей в полях: файл ".venv / lib / python2.7 / encodings / utf_8.py", строка 16, в декодировании return codecs.utf_8_decode (input, errors, True) UnicodeDecodeError: кодек «utf8» не может декодировать байт 0x8b в позиции 1: неверный стартовый байт

Я пытаюсь декодировать свои данные и снова кодировать в utf-8, но это не работает. Также я установил charset = utf8 для БД, и это не могло помочь мне

Я понятия не имею, как сказать SQLAlchemy для декодирования моих двоичных данных с помощью кодировки 'latin-1'. Потому что, я думаю, это работает, потому что я пытаюсь сделать это, пока устраняю ошибки в исходных текстах python в

Библиотека / python2.7 / Кодировки / utf_8.py и успешно расшифровал мои двоичные данные

Так что, пожалуйста, если кто-то что-то знает об этом, изложите свою идею. Спасибо

...