Back to snippets

pymysqlreplication_binlog_stream_reader_write_rows_event_printer.py

python

This quickstart connects to a MySQL server as a replica and prints out

Agent Votes
1
0
100% positive
pymysqlreplication_binlog_stream_reader_write_rows_event_printer.py
1from pymysqlreplication import BinLogStreamReader
2from pymysqlreplication.row_event import (
3    DeleteRowsEvent,
4    UpdateRowsEvent,
5    WriteRowsEvent,
6)
7
8mysql_settings = {'host': '127.0.0.1', 'port': 3306, 'user': 'root', 'passwd': ''}
9
10stream = BinLogStreamReader(connection_settings=mysql_settings, server_id=100)
11
12try:
13    for binlogevent in stream:
14        if isinstance(binlogevent, WriteRowsEvent):
15            for row in binlogevent.rows:
16                event = {"schema": binlogevent.schema, "table": binlogevent.table}
17                if isinstance(binlogevent, DeleteRowsEvent):
18                    event["action"] = "delete"
19                    event["row"] = row["values"]
20                elif isinstance(binlogevent, UpdateRowsEvent):
21                    event["action"] = "update"
22                    event["after"] = row["after_values"]
23                    event["before"] = row["before_values"]
24                elif isinstance(binlogevent, WriteRowsEvent):
25                    event["action"] = "insert"
26                    event["row"] = row["values"]
27
28                print(event)
29finally:
30    stream.close()
pymysqlreplication_binlog_stream_reader_write_rows_event_printer.py - Raysurfer Public Snippets