我通过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_list
与HEX()
上面的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)