diff --git a/pymysqlreplication/binlogstream.py b/pymysqlreplication/binlogstream.py index 4307afb2..244b2f0c 100644 --- a/pymysqlreplication/binlogstream.py +++ b/pymysqlreplication/binlogstream.py @@ -3,6 +3,7 @@ import pymysql import struct +from pkg_resources import parse_version from pymysql.constants.COMMAND import COM_BINLOG_DUMP, COM_REGISTER_SLAVE from pymysql.cursors import DictCursor from pymysql.util import int2byte @@ -259,7 +260,7 @@ def _register_slave(self): packet = self.report_slave.encoded(self.__server_id) - if pymysql.__version__ < "0.6": + if parse_version(pymysql.__version__) < parse_version("0.6"): self._stream_connection.wfile.write(packet) self._stream_connection.wfile.flush() self._stream_connection.read_packet() @@ -407,7 +408,7 @@ def __connect_to_stream(self): # encoded_data prelude += gtid_set.encoded() - if pymysql.__version__ < "0.6": + if parse_version(pymysql.__version__) < parse_version("0.6"): self._stream_connection.wfile.write(prelude) self._stream_connection.wfile.flush() else: @@ -424,7 +425,7 @@ def fetchone(self): self.__connect_to_ctl() try: - if pymysql.__version__ < "0.6": + if parse_version(pymysql.__version__) < parse_version("0.6"): pkt = self._stream_connection.read_packet() else: pkt = self._stream_connection._read_packet() diff --git a/pymysqlreplication/row_event.py b/pymysqlreplication/row_event.py index fcf4419c..88612e20 100644 --- a/pymysqlreplication/row_event.py +++ b/pymysqlreplication/row_event.py @@ -6,7 +6,7 @@ import json from pymysql.util import byte2int -from pymysql.charset import charset_to_encoding +from pymysql.charset import charset_by_name from .event import BinLogEvent from .exceptions import TableMetadataUnavailableError @@ -215,7 +215,7 @@ def __read_fsp(self, column): def __read_string(self, size, column): string = self.packet.read_length_coded_pascal_string(size) if column.character_set_name is not None: - string = string.decode(charset_to_encoding(column.character_set_name)) + string = string.decode(charset_by_name(column.character_set_name).encoding) return string def __read_bit(self, column):