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数据同步内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pytorch实现将label变成one hot编码的两种方式

    Pytorch实现将label变成one hot编码的两种方式

    这篇文章主要介绍了Pytorch实现将label变成one hot编码的两种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • pyqt5 获取显示器的分辨率的方法

    pyqt5 获取显示器的分辨率的方法

    今天小编就为大家分享一篇pyqt5 获取显示器的分辨率的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python2中文处理纪要的实现方法

    Python2中文处理纪要的实现方法

    本篇文章主要介绍了Python2中文处理纪要的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • python实现图片横向和纵向拼接

    python实现图片横向和纵向拼接

    这篇文章主要为大家详细介绍了python实现图片横向和纵向拼接,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 解决tensorflow训练时内存持续增加并占满的问题

    解决tensorflow训练时内存持续增加并占满的问题

    今天小编就为大家分享一篇解决tensorflow训练时内存持续增加并占满的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python 图像处理之颜色迁移(reinhard VS welsh)

    Python 图像处理之颜色迁移(reinhard VS welsh)

    这篇文章主要介绍了分别利用reinhard算法和welsh算法实现图像的颜色迁移,并对二者算法的效果进行了对比,感兴趣的小伙伴可以了解一下
    2021-12-12
  • 使用Django框架创建项目

    使用Django框架创建项目

    这篇文章介绍了使用Django框架创建项目的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Python实现类似jQuery使用中的链式调用的示例

    Python实现类似jQuery使用中的链式调用的示例

    chained calls链式调用其实多是指一种方法链的程序写法,这里我们来看一下Python实现类似jQuery使用中的链式调用的示例,首先说明一下什么是链式调用:
    2016-06-06
  • Selenium结合BeautifulSoup4编写简单的python爬虫

    Selenium结合BeautifulSoup4编写简单的python爬虫

    这篇文章主要介绍了Selenium结合BeautifulSoup4编写简单的python爬虫,帮助大家更好的理解和学习python 爬虫的相关知识,感兴趣的朋友可以了解下
    2020-11-11
  • django连接mysql数据库及建表操作实例详解

    django连接mysql数据库及建表操作实例详解

    这篇文章主要介绍了django连接mysql数据库及建表操作,结合实例形式详细分析了Django框架连接mysql数据库、创建与查询数据表相关操作实现技巧,需要的朋友可以参考下
    2019-12-12

最新评论