sql >> データベース >  >> RDS >> Mysql

Pythonのmysqlコネクタを使用してmysqlデータベースからblobを適切に取得する

    MySQL 8.0.13、mysql-connector-python 8.0.13、およびsqlalchemy1.2.14でBLOBが誤ってUTF-8文字列として読み戻されるという同じ問題が発生しました。

    私たちにとっての秘訣は、use_pureを有効にすることでした。 MySQLコネクタのオプション 。デフォルトのuse_pure 8.0.11で変更され、新しいデフォルトはC拡張機能を使用することです。したがって、オプションを元に戻します:

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

    エラーとスタックトレースの詳細:

    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
    


    1. PDOにLIKEクエリを実装する

    2. 式インデックスの有用性について

    3. TSQL:現地時間をUTCに変換する方法は? (SQL Server 2008)

    4. Windows10に移行するときに「システムリソース超過」を修正する方法