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数据同步内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
pycharm2022.1最新永久激活码破解补丁一键安装教程免费分享(2022持续更新)
更新到Pycharm 2022.2.x版,pycharm2022.2最新可用永久激活码分享(持续更新),pycharm激活补丁一键安装简单方便,无需手动修改文件,兼容苹果MAC,linux,Windows系统2022-07-07tensorflow1.15与numpy、keras以及Python兼容版本对照方式
这篇文章主要介绍了tensorflow1.15与numpy、keras以及Python兼容版本对照方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-03-03关于pygame.surface.blit()方法4个参数的使用
这篇文章主要介绍了关于pygame.surface.blit()方法4个参数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-03-03
最新评论