Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pymysql为位类型返回错误的值_Python_Mysql_Type Conversion_Pymysql - Fatal编程技术网

Python pymysql为位类型返回错误的值

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负载、结果 获取

我使用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]