Python MySQL连接器返回字节数组,而不是常规字符串值

r0x*_*tte 1 python mysql sqlalchemy python-3.x pandas

我正在将数据从一张表加载到熊猫,然后将该数据插入到新表中。但是,我看到的是字节数组,而不是普通的字符串值。

bytearray(b'TM16B0I8') 它应该是 TM16B0I8

我在这里做错了什么?

我的代码:

engine_str = 'mysql+mysqlconnector://user:pass@localhost/db'
engine = sqlalchemy.create_engine(engine_str, echo=False, encoding='utf-8')
connection = engine.connect()

th_df = pd.read_sql('select ticket_id, history_date', con=connection)

for row in th_df.to_dict(orient="records"):
    var_ticket_id = row['ticket_id']
    var_history_date = row['history_date']

    query = 'INSERT INTO new_table(ticket_id, history_date)....'
Run Code Online (Sandbox Code Playgroud)

max*_*moo 6

由于某些原因,Python MySql连接器仅返回字节数,(更多信息((如何使用mysql.connector从mysql返回str?),但是您可以使用以下命令将它们解码为unicode字符串

var_ticket_id = row['ticket_id'].decode()
var_history_date = row['history_date'].decode()
Run Code Online (Sandbox Code Playgroud)


小智 5

确保您使用正确的排序规则和编码。我碰巧UTF8MB4_BIN用于我的网站数据库表之一。将其更改为utf8mb4_general_ci,它就成功了。