sql >> Base de Datos >  >> RDS >> Mysql

Obtener correctamente blobs de la base de datos mysql con el conector mysql en python

Nos encontramos con el mismo problema de que los BLOB se leían por error como cadenas UTF-8 con MySQL 8.0.13, mysql-connector-python 8.0.13 y sqlalchemy 1.2.14.

¿Cuál fue el truco para nosotros? Habilitar use_pure opción de MySQL Connector . El valor predeterminado de use_pure había cambiado en 8.0.11 con el nuevo valor predeterminado para usar la extensión C. Así, volvemos a configurar la opción:

create_engine(uri, connect_args={'use_pure': True}, ...)

Detalles de nuestro error y seguimiento de la pila:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9c in position 1: invalid start byte
The above exception was the direct cause of the following exception:

Traceback (most recent call last):
    ....
    File "/usr/local/lib/python3.6/site-packages/mysql/connector/cursor_cext.py", line 272, in execute
        self._handle_result(result)
    File "/usr/local/lib/python3.6/site-packages/mysql/connector/cursor_cext.py", line 163, in _handle_result
        self._handle_resultset()
    File "/usr/local/lib/python3.6/site-packages/mysql/connector/cursor_cext.py", line 651, in _handle_resultset
        self._rows = self._cnx.get_rows()[0]
    File "/usr/local/lib/python3.6/site-packages/mysql/connector/connection_cext.py", line 273, in get_rows
        row = self._cmysql.fetch_row()
    SystemError: <built-in method fetch_row of _mysql_connector.MySQL object at 0x5627dcfdf9f0> returned a result with an error set