我正在通过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
进行比较:
区别在于:binarydata现在的前缀是u'
,所有的\x
都消失了。在
因此,下面的陈述
cursor.executemany(SQL, data_list)
导致错误:
'ascii' codec can't decode byte 0x80 in position 24: ordinal not in range(128)
目前没有回答
相关问题 更多 >
编程相关推荐