Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir correctement des blobs de la base de données mysql avec le connecteur mysql en python

Nous avons rencontré le même problème que les BLOB ont été lus par erreur en tant que chaînes UTF-8 avec MySQL 8.0.13, mysql-connector-python 8.0.13 et sqlalchemy 1.2.14.

Ce qui a fait l'affaire pour nous a été d'activer le use_pure option du connecteur MySQL . La valeur par défaut de use_pure avait changé dans la version 8.0.11, la nouvelle valeur par défaut étant d'utiliser l'extension C. Ainsi, nous remettons l'option :

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

Détails de notre erreur et trace de la pile :

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