Python pymysql为位类型返回错误的值
我使用pymysql==0.10.1 python3.7来读取带有位列的表,并得到错误的值: 创建表root.numeric 比特10; 插入到root.numeric中 值b'0010001000'; 插入到root.numeric中 价值b'0000100000'; 然后 使用connection.cursor作为游标: sql=fselect*from`root`.`numeric`; cursor.executesql 结果=cursor.fetchone 打印MySQL负载、结果 获取:Python pymysql为位类型返回错误的值,python,mysql,type-conversion,pymysql,Python,Mysql,Type Conversion,Pymysql,我使用pymysql==0.10.1 python3.7来读取带有位列的表,并得到错误的值: 创建表root.numeric 比特10; 插入到root.numeric中 值b'0010001000'; 插入到root.numeric中 价值b'0000100000'; 然后 使用connection.cursor作为游标: sql=fselect*from`root`.`numeric`; cursor.executesql 结果=cursor.fetchone 打印MySQL负载、结果 获取
mysql payload {'BIT_COL': b'\x00\x88'} # nice
mysql payload {'BIT_COL': b'\x00 '}. # not nice
为什么呢?我检查过了,pymysql代码似乎没有为位字段转换任何内容。正如MySQLdb中提到的那样,不处理位,因此我们也不应该这样做,因此正确的转换是:
def convert_位自身,b:
位字段被压缩为big-endian unsigned long,
我们将它们转换为人类可读的int/long
b=b\x00*8-透镜+带零的b焊盘
返回结构解包>Q,b[0]