def _read_row_from_packet(self, packet): use_unicode = self.connection.use_unicode row = [] for field in self.fields: data = packet.read_length_coded_string() if data is not None: field_type = field.type_code if use_unicode: if field_type in TEXT_TYPES: charset = charset_by_id(field.charsetnr) if use_unicode and not charset.is_binary: # TEXTs with charset=binary means BINARY types. data = data.decode(charset.encoding) else: data = data.decode() converter = self.connection.decoders.get(field_type) if DEBUG: print("DEBUG: field={}, converter={}".format( field, converter)) if DEBUG: print("DEBUG: DATA = ", data) if converter is not None: data = converter(data) row.append(data) return tuple(row)
def _read_row_from_packet(self, packet): use_unicode = self.connection.use_unicode row = [] for field in self.fields: data = packet.read_length_coded_string() if data is not None: field_type = field.type_code if use_unicode: if field_type in TEXT_TYPES: charset = charset_by_id(field.charsetnr) if use_unicode and not charset.is_binary: # TEXTs with charset=binary means BINARY types. data = data.decode(charset.encoding) else: data = data.decode() converter = self.connection.decoders.get(field_type) if DEBUG: print("DEBUG: field={}, converter={}".format(field, converter)) if DEBUG: print("DEBUG: DATA = ", data) if converter is not None: data = converter(data) row.append(data) return tuple(row)
def _get_server_information(self): i = 0 packet = MysqlPacket(self) data = packet.get_all_data() if DEBUG: dump_packet(data) #packet_len = byte2int(data[i:i+1]) #i += 4 self.protocol_version = byte2int(data[i:i+1]) i += 1 server_end = data.find(int2byte(0), i) # TODO: is this the correct charset? should it be default_charset? self.server_version = data[i:server_end].decode(self.charset) i = server_end + 1 self.server_thread_id = struct.unpack('<h', data[i:i+2]) i += 4 self.salt = data[i:i+8] i += 9 if len(data) >= i + 1: i += 1 self.server_capabilities = struct.unpack('<h', data[i:i+2])[0] i += 1 self.server_language = byte2int(data[i:i+1]) self.server_charset = charset_by_id(self.server_language).name i += 16 if len(data) >= i+12-1: rest_salt = data[i:i+12] self.salt += rest_salt
def _get_server_information(self): i = 0 packet = MysqlPacket(self) data = packet.get_all_data() if DEBUG: dump_packet(data) #packet_len = byte2int(data[i:i+1]) #i += 4 self.protocol_version = byte2int(data[i:i + 1]) i += 1 server_end = data.find(int2byte(0), i) # TODO: is this the correct charset? should it be default_charset? self.server_version = data[i:server_end].decode(self.charset) i = server_end + 1 self.server_thread_id = struct.unpack('<h', data[i:i + 2]) i += 4 self.salt = data[i:i + 8] i += 9 if len(data) >= i + 1: i += 1 self.server_capabilities = struct.unpack('<h', data[i:i + 2])[0] i += 1 self.server_language = byte2int(data[i:i + 1]) self.server_charset = charset_by_id(self.server_language).name i += 16 if len(data) >= i + 12 - 1: rest_salt = data[i:i + 12] self.salt += rest_salt
def convert_characters(connection, field, data): field_charset = charset_by_id(field.charsetnr).name if field.flags & FLAG.SET: return convert_set(data.decode(field_charset)) if field.flags & FLAG.BINARY: return data if connection.use_unicode: data = data.decode(field_charset) elif connection.charset != field_charset: data = data.decode(field_charset) data = data.encode(connection.charset) return data
def _get_server_information(self): i = 0 packet = MysqlPacket(self) yield packet.recv_packet() packet.check_error() data = packet.get_all_data() if DEBUG: dump_packet(data) self.protocol_version = byte2int(data[i : i + 1]) i += 1 server_end = data.find(int2byte(0), i) self.server_version = data[i:server_end].decode("latin1") i = server_end + 1 self.server_thread_id = struct.unpack("<I", data[i : i + 4]) i += 4 self.salt = data[i : i + 8] i += 9 # 8 + 1(filler) self.server_capabilities = struct.unpack("<H", data[i : i + 2])[0] i += 2 if len(data) >= i + 6: lang, stat, cap_h, salt_len = struct.unpack("<BHHB", data[i : i + 6]) i += 6 self.server_language = lang self.server_charset = charset_by_id(lang).name self.server_status = stat if DEBUG: print("server_status: %x" % stat) self.server_capabilities |= cap_h << 16 if DEBUG: print("salt_len:", salt_len) salt_len = max(12, salt_len - 9) # reserved i += 10 if len(data) >= i + salt_len: self.salt += data[i : i + salt_len] # salt_len includes auth_plugin_data_part_1 and filler
def _get_server_information(self): i = 0 packet = self._read_packet() data = packet.get_all_data() if DEBUG: dump_packet(data) self.protocol_version = byte2int(data[i:i + 1]) i += 1 server_end = data.find(int2byte(0), i) self.server_version = data[i:server_end].decode('latin1') i = server_end + 1 self.server_thread_id = struct.unpack('<I', data[i:i + 4]) i += 4 self.salt = data[i:i + 8] i += 9 # 8 + 1(filler) self.server_capabilities = struct.unpack('<H', data[i:i + 2])[0] i += 2 if len(data) >= i + 6: lang, stat, cap_h, salt_len = struct.unpack('<BHHB', data[i:i + 6]) i += 6 self.server_language = lang self.server_charset = charset_by_id(lang).name self.server_status = stat if DEBUG: print("server_status: %x" % stat) self.server_capabilities |= cap_h << 16 if DEBUG: print("salt_len:", salt_len) salt_len = max(12, salt_len - 9) # reserved i += 10 if len(data) >= i + salt_len: self.salt += data[ i:i + salt_len] # salt_len includes auth_plugin_data_part_1 and filler