如何从MySQL / MariaDB读取二进制列到pandas的数据帧?

时间:2018-02-08 03:44:17

标签: python mysql pandas mariadb

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

1)使用https://pypi.python.org/pypi/mariadb-dyncol准备二进制数据 2)将数据写入pandas DataFrame
3)使用DataFrame和SQL

MariaDB插入mysql.connector

示例:

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

但数据框中的二进制数据看起来与我最初在步骤1)-3)

中写的数据不同

将我使用data_listHEX()上面的data_list进行比较:

data_list=[{ id': 0, '**binarydata**': u'040F00320000000000030020000600400009..'}]  

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

结果是以下陈述

cursor.executemany(SQL, data_list)  

导致错误:

  

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

0 个答案:

没有答案