当前位置: 首页 > news >正文

python同步mysql数据

python写了一个简单的mysql数据同步脚本,只作为学习练习,大佬勿喷

# -*- coding: utf-8 -*-
"""
@Time:2025/5/29 14:38
@Auth:HEhandsome
"""
import pymysql
from pymysql import Connectclass Mysql:def __init__(self):#源数据库self.sou_host = 'sou_host'self.sou_user = 'sou_user'self.sou_port = 3306self.sou_password = 'sou_password'self.sou_database = 'sou_database'#目标数据库self.tag_host = 'tag_host'self.tag_user = 'tag_user'self.tag_port = 3306self.tag_password = 'tag_password'self.tag_database = 'tag_database'#存储表结构self.create_table_sql=Noneself.select_table_sql=Noneself.columns=None#连接源数据库和目标数据库self.sou_conn=pymysql.Connect(host=self.sou_host,user=self.sou_user,port=self.sou_port,password=self.sou_password,database=self.sou_database)self.tag_conn=pymysql.Connect(host=self.tag_host,user=self.tag_user,port=self.tag_port,password=self.tag_password,database=self.tag_database)def get_source_db(self):try:with self.sou_conn.cursor() as cursor:#获取表结构cursor.execute('SHOW CREATE TABLE users')# print(cursor.fetchone())result = cursor.fetchone()self.create_table_sql = result[1]except Exception as e:print(f'获取失败:{e}')def get_tag_db(self):with self.tag_conn.cursor() as cursor:cursor.execute('DROP TABLE IF EXISTS users')cursor.execute(self.create_table_sql)self.tag_conn.commit()def read_sou_data(self):with self.sou_conn.cursor() as cursor:#获取表结构cursor.execute('SELECT * FROM users')result = cursor.fetchall()self.select_table_sql = result#获取当前查询结果的所有列名,形成一个列表self.columns = [desc[0] for desc in cursor.description]  # 获取列名def write_tag_db(self):with self.tag_conn.cursor() as cursor:# 构建插入语句placeholders = ','.join(['%s'] * len(self.columns))cols = ','.join(self.columns)sql = f"INSERT INTO users ({cols}) VALUES ({placeholders})"#插入数据cursor.executemany(sql, self.select_table_sql)self.tag_conn.commit()print(f"成功插入 {cursor.rowcount} 条记录")
if __name__ == '__main__':db = Mysql()db.get_source_db()db.get_tag_db()db.read_sou_data()db.write_tag_db()

相关文章:

  • 报错SvelteKitError: Not found: /.well-known/appspecific/com.chrome.devtools.json
  • macOS 安装 Grafana + Prometheus + Node Exporter
  • 命令模式,观察者模式,状态模式,享元模式
  • 支持selenium的chrome driver更新到137.0.7151.55
  • 俄罗斯无人机自主任务规划!UAV-CodeAgents:基于多智能体ReAct和视觉语言推理的可扩展无人机任务规划
  • 【读代码】BabyAGI:自我构建的自主代理框架深度解析
  • VR视角下,浙西南革命的热血重生​
  • spark-AQE/Tungsten介绍及其触发条件
  • 手机打电话时将对方DTMF数字转为RFC2833发给局域网SIP坐席
  • MongoDB(七) - MongoDB副本集安装与配置
  • 性能优化深度实践:突破vue应用性能
  • 机器学习数据降维方法
  • 【论文解读】DETR: 用Transformer实现真正的End2End目标检测
  • 【2025文博会现场直击】多图预警
  • WSL 开发环境搭建指南:Java 11 + 中间件全家桶安装实战
  • 甘特图 dhtmlxGantt.js UA实例
  • LVS-Keepalived高可用群集
  • 3D PDF如何制作?SOLIDWORKS MBD模板定制技巧
  • LVS+Keepalived高可用集群
  • Opencv实用操作6 开运算 闭运算 梯度运算 礼帽 黑帽
  • 信息流广告文案/宁波seo营销
  • 网站被入侵后需做的检测(1)/网站优化排名提升
  • 网站做微信接口吗/百度上传自己个人简介
  • 城乡建设与环保部网站/一键免费建站
  • 郑州信息港/下载班级优化大师
  • 有域名了怎么建设网站/国家培训网官网