在Python中,可以使用pymysql
库来实现对MySQL主从复制和读写分离的代码封装。以下是一个简单的示例:
import pymysqlclass MySQLReplication:def __init__(self, master_config, slave_config):self.master_conn = pymysql.connect(**master_config)self.slave_conn = pymysql.connect(**slave_config)def execute_query(self, query, is_write=False):if is_write:connection = self.master_connelse:connection = self.slave_connwith connection.cursor() as cursor:cursor.execute(query)result = cursor.fetchall()return resultdef close_connections(self):self.master_conn.close()self.slave_conn.close()# 示例用法
master_config = {'host': 'localhost','user': 'master_user','password': 'master_password','database': 'mydatabase'
}slave_config = {'host': 'localhost','user': 'slave_user','password': 'slave_password','database': 'mydatabase'
}replication = MySQLReplication(master_config, slave_config)# 从主数据库中插入数据
query = "INSERT INTO customers (name, address) VALUES ('John', 'Highway 21')"
replication.execute_query(query, is_write=True)# 从从数据库中查询数据
query = "SELECT * FROM customers"
result = replication.execute_query(query)
for row in result:print(row)replication.close_connections()
在上述示例中,创建了一个名为MySQLReplication
的类,该类用于封装主从数据库连接和执行查询的功能。在类的初始化方法中,传入主数据库和从数据库的配置信息,并创建连接。然后,使用execute_query
方法执行查询,可以选择是否使用主数据库连接(即写入操作)或从数据库连接(即读取操作)。最后,使用close_connections
方法关闭所有数据库连接。
根据实际情况,你需要将master_config
和slave_config
中的主机名、用户名、密码和数据库名替换为你的实际配置。然后,可以根据需要调用execute_query
方法执行查询或写入操作,并使用结果进行后续处理。最后,不要忘记在使用完毕后调用close_connections
方法关闭数据库连接。
请注意,这只是一个简单的示例,实际的主从复制和读写分离方案可能需要更复杂的配置和逻辑
。你也可以参考MySQL 主从复制与读写分离我觉得他写的不错,但也只是推荐,推荐原因写的很详细。