如何将MySQL/MariaDB的二进制列读入pandas的数据帧?

2024-04-19 03:37:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在通过python将一些二进制数据插入MariaDB二进制列中。
以下3个步骤按预期工作:

1)使用https://pypi.python.org/pypi/mariadb-dyncol
2) 将数据写入pandas DataFrame
3) 使用mysql.connector和SQL将DataFrame插入MariaDB表中

示例:

SQL="INSERT INTO T(id, binarydata) VALUES (%(id)s, %(binarydata)s)”  
data_list=[{ id': 0, '**binarydata**': '\x04\x0f\x002\x00\x00\x00\x00\x00\x03\x00 \x00\x06\x00@\x00\t\x00`\x00\x0c\x00\x80\x00\x0f\x0’}]  
cursor.executemany(SQL, data_list)

问题就在这里。我需要从数据库中读取插入的数据,将其放入panda的DataFrame,对非二进制列进行一些操作,然后将DataFrame写回数据库。在

问题:我不知道如何正确地将二进制列从MariaDB推送到pandas DataFrame

我试图使用HEX()SELECT id, HEX(binarydata) FROM T

但dataframe中的二进制数据看起来和我最初在步骤1-3中编写的数据不同)

将我使用HEX()得到的data_list与上面的data_list进行比较:

^{pr2}$

区别在于:binarydata现在的前缀是u',所有的\x都消失了。在

因此,下面的陈述

cursor.executemany(SQL, data_list)  

导致错误:

'ascii' codec can't decode byte 0x80 in position 24: ordinal not in range(128)


Tags: 数据pypiiddataframepandassqldata二进制