How to return str from MySQL using mysql.connector?

后端 未结 5 1068
慢半拍i
慢半拍i 2020-12-16 16:06

I\'m trying to use MySQL Connector/Python from mysql.com with Python 3.

I have tables in UTF-8 coding, and when I fetch the rows, all my chars columns returned like

5条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-16 16:41

    Seems like this happens when you use binary collation, at least the same happened to me. To convert the bytearrays to Unicode strings, you can add a custom converter class:

    class MyConverter(mysql.connector.conversion.MySQLConverter):
    
        def row_to_python(self, row, fields):
            row = super(MyConverter, self).row_to_python(row, fields)
    
            def to_unicode(col):
                if isinstance(col, bytearray):
                    return col.decode('utf-8')
                return col
    
            return[to_unicode(col) for col in row]
    
    sql = mysql.connector.connect(converter_class=MyConverter, host=...)
    

提交回复
热议问题