Python实现Mysql全量数据同步的脚本分享

 更新时间:2023年06月19日 16:43:29   作者:一夜奈何梁山  
这篇文章主要为大家详细介绍了基于Python如何实现Mysql全量数据同步的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下

一: 需求

线上数据全量同步到测试环境。

二:脚本

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
import datetime
import pymysql
import os

CUR_PATH = os.path.dirname(os.path.abspath(__file__))

# 需要同步的表
table_names = ['table_name_1', 'table_name_2']

source_db_config = {
    'db_host': 'XXXXX',
    'db_user': 'XXXX',
    'db_pwd': 'XXXX',
    'db': 'XCXXXCX',
    'db_port': 3306,
}

out_db_config = {
    'db_host': 'XXXX',
    'db_user': 'XXXX',
    'db_pwd': 'XXXX',
    'db': 'XXXXX',
    'db_port': 3306,
}


def get_datas(table_name):
    """源数据库,获取全量数据"""
    db = pymysql.connect(source_db_config['db_host'], source_db_config['db_user'], source_db_config['db_pwd'],
                         source_db_config['db'], source_db_config['dp_port'], charset='utf8')
    cursor = db.cursor(pymysql.cursors.DictCursor)
    readsql = '''select * from {}'''.format(table_name)
    cursor.execute(readsql)
    results = cursor.fetchall()
    for data in results:
        yield data
    cursor.close()
    db.close()


def format_data(data):
    """数据格式化"""
    for k, v in data.items():
        if type(v) == datetime.datetime:
            data[k] = "'{}'".format(v.strftime('%Y-%m-%d %H:%M:%S'))
        elif type(v) == type(v) == datetime.date:
            data[k] = "'{}'".format(v.strftime('%Y-%m-%d'))
        elif type(v) == unicode:
            data[k] = "'{}'".format(v.encode('utf-8'))
    return data


def out_put_data(table_name):
    write = pymysql.connect(out_db_config['db_host'], out_db_config['db_user'], out_db_config['db_pwd'],
                            out_db_config['db'], out_db_config['dp_port'], charset='utf8')
    for data in get_datas(table_name):
        write_cursor = write.cursor()
        data = format_data(data)
        sql = ','.join(['{}=%s'.format(item) for item in data.keys()])
        temp = sql % (tuple(data.values()))

        write_sql = '''insert  into  %s set %s on  duplicate key update %s''' % (table_name, temp, temp)
        try:
            write_cursor.execute(write_sql)
            write.commit()
        except Exception as e:
            print("insert error, err_msg is {}".format(e))
            write.rollback()
        finally:
            write_cursor.close()
    write.close()


if __name__ == "__main__":
    start_time = time.time()
    for table_name in table_names:
        out_put_data(table_name=table_name)
    end_time = time.time()
    cost_time = end_time - start_time
    print("cost_time is {}".format(cost_time))

到此这篇关于Python实现Mysql全量数据同步的脚本分享的文章就介绍到这了,更多相关Python Mysql数据同步内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用python爬取软考试题之ip自动

    利用python爬取软考试题之ip自动

    最近为了考试打算抓取网上的软考试题,在抓取中遇到一些问题,下面这篇文章主要介绍的是利用python爬取软考试题之ip自动的相关资料,文中介绍的非常详细,需要的朋友们下面来一起看看吧。
    2017-03-03
  • pycharm2022.1最新永久激活码破解补丁一键安装教程免费分享(2022持续更新)

    pycharm2022.1最新永久激活码破解补丁一键安装教程免费分享(2022持续更新)

    更新到Pycharm 2022.2.x版,pycharm2022.2最新可用永久激活码分享(持续更新),pycharm激活补丁一键安装简单方便,无需手动修改文件,兼容苹果MAC,linux,Windows系统
    2022-07-07
  • python3序列化与反序列化用法实例

    python3序列化与反序列化用法实例

    这篇文章主要介绍了python3序列化与反序列化用法,实例分析了Python3使用pickle模块针对字符串进行序列化操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Python双端队列deque的实现

    Python双端队列deque的实现

    双端队列deque支持从任意一端增加和删除元素。本文详细的介绍了Python双端队列deque的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • pytorch构建网络模型的4种方法

    pytorch构建网络模型的4种方法

    这篇文章主要为大家详细介绍了pytorch构建网络模型的4种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • tensorflow1.15与numpy、keras以及Python兼容版本对照方式

    tensorflow1.15与numpy、keras以及Python兼容版本对照方式

    这篇文章主要介绍了tensorflow1.15与numpy、keras以及Python兼容版本对照方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 关于pygame.surface.blit()方法4个参数的使用

    关于pygame.surface.blit()方法4个参数的使用

    这篇文章主要介绍了关于pygame.surface.blit()方法4个参数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 在tensorflow中实现去除不足一个batch的数据

    在tensorflow中实现去除不足一个batch的数据

    今天小编就为大家分享一篇在tensorflow中实现去除不足一个batch的数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 详解python数据结构之队列Queue

    详解python数据结构之队列Queue

    这篇文章主要介绍了python数据结构之队列Queue,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • Python中NumPy的ufuncs函数实例

    Python中NumPy的ufuncs函数实例

    这篇文章主要介绍了Python中NumPy的ufuncs函数实例,NumPy是一个开源的Python科学计算库,使用NumPy,就可以很自然地使用数组和矩阵,本文主要介绍Python Numpy ufuncs通用函数,需要的朋友可以参考下
    2023-07-07

最新评论