我遇到了问题。在这里,我的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 / lib / python2.7 / site-packages / sqlalchemy / orm / query.py”, 第2924行,在one_or_none中 ret = list(self)文件“ .venv / lib / python2.7 / site-packages / sqlalchemy / orm / query.py”, 第2995行,位于 it 返回self._execute_and_instances(context)文件“ .venv / lib / python2.7 / site-packages / sqlalchemy / orm / query.py”, 第3018行,在_execute_and_instances中 结果= conn.execute(querycontext.statement,self._params)文件“ .venv / lib / python2.7 / site-packages / sqlalchemy / engine / base.py”, 第948行,执行 返回meth(self,multiparams,params)文件“ .venv / lib / python2.7 / site-packages / sqlalchemy / sql / elements.py”, _execute_on_connection中的第269行 返回连接。_execute_clauseelement(自己,多参数,参数)文件 “ .venv / lib / python2.7 / site-packages / sqlalchemy / engine / base.py”, 第1060行,在_execute_clauseelement中 编译后的SQL,stilled_params文件“ .venv / lib / python2.7 / site-packages / sqlalchemy / engine / base.py”, _execute_context中的第1200行 上下文)文件“ .venv / lib / python2.7 / site-packages / sqlalchemy / engine / base.py”, _handle_dbapi_exception中的第1416行 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”, do_execute中的509行 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”, _handle_result中的第163行 self._handle_resultset()文件“ .venv / lib / python2.7 / site-packages / mysql / connector / cursor_cext.py”, _handle_resultset中的第651行 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中 对于字段中的col:文件“ .venv / lib / python2.7 / encodings / utf_8.py”, 第16行,在解码中 返回codecs.utf_8_decode(input,errors,True)UnicodeDecodeError:'utf8'编解码器无法解码位置1的字节0x8b 起始字节无效
我尝试解码数据并再次编码为utf-8,但是它不起作用。我也为数据库设置了charset = utf8,这对我没有帮助
我不知道如何说SQLAlchemy通过'latin-1'编码解码我的二进制数据。因为,我认为它可行,导致我在
中的python源文件中解包时尝试lib / python2.7 / encodings / utf_8.py 并成功解码了我的二进制数据
所以,如果有人对此有所了解,请提出您的想法。谢谢