python如何实现不同数据库间数据同步功能

  介绍

这篇文章主要为大家展示了python如何实现不同数据库间数据同步功能,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“python如何实现不同数据库间数据同步功能”这篇文章吧。

python是什么意思

python是一种跨平台的,具有解释性,编译性,互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。

功能描述

数据库间数据同步方式很多,在上篇博文中有总结。本文是用py程序实现数据同步。
数据库中有几十张表,要汇聚到B数据库中,且表结构一致,需要准实时的进行数据同步,用工具实现时对其控制有限且配置较繁琐,故自写程序,可自由设置同步区间,记录自己想要的日志

代码

本代码实现功能简单,采用面向过程,有需求的同学可以自己优化成面向对象方式,在日志这块缺少数据监控,可根据需求增加。主要注意点:
1,数据抽取时采用区间抽取(按时间区间),流式游标迭代器+ fetchone,避免内存消耗
2,在数据插入时采用executemany(列表),加快插入效率

import  pymysql   import 操作系统   import  datetime,时间      def  update_time(内容):   with 才能;开放(filepathtime, & # 39; w # 39;), as  f:   ,,,f.writelines(内容)      def  recode_log(内容):   with 才能;开放(filepathlog, & # 39;一个# 39;),as  f:   ,,,f.writelines(内容)      def  transferdata ():   # 1,才能获取需要抽取的表,抽取数据的时间点   with 才能;开放(filepathtime, & # 39; " # 39;), as  f:   ,,,lines =, f.readlines(), #,读取所有数据   ,,,print(“需要同步的表信息“,行)   ,,,for  line 拷贝:   ,,,,,startdatetime =, time.strftime (& # 39; Y % - % - % d  % H: % m: % & # 39;, time.localtime (time.time ()))   ,,,,,tablename_list =line.split (& # 39; & # 39;)   ,,,,,#打印(tablename_list)   ,,,,,#打印(tablename_list [1])   ,,,,,tablename_list [1],=, tablename_list [1] .replace (& # 39; \ n # 39; & # 39; & # 39;)   ,,,,,#打印(tablename_list)   ,,,,,tablename =, tablename_list [0]   ,,,,,updatetime =, tablename_list [1]   ,,,,,#打印(表名,updatetime)      ,,,,,# 2,抽取此表此时间点的数据,同步   ,,,,,updatetime_s =, datetime.datetime.strptime (updatetime, & # 39; Y % - % - % d  % H: % m: % & # 39;)   ,,,,,updatetime_e =,(时间+ updatetime_s  datetime.timedelta(小时=1).strftime (“Y % - % - % d  % H: % m: % S")   ,,,,,#打印(updatetime_s)   ,,,,,#打印(q_sql)   ,,,,,db =, pymysql.connect(主机=host_o,端口=port_o,用户=user_o, passwd=passwd_o, db=db_o)   ,,,,,cursor =, db.cursor ()   ,,,,,q_sql =,“select  a, b, c 得到% s  where  c 祝辞=,& # 39;% & # 39;,“%,\   ,,,,,,,,,(表名,,updatetime_s)   ,,,,,# 2.1,首先判断下原表中是否有待同步数据,若有则同步且更新同步的时间参考点,若没有则不同步且不更新同步的时间参考点   ,,,,,试一试:   ,,,,,,,cursor.execute (q_sql)   ,,,,,,,results =, cursor.fetchone ()   ,,,,,,,#打印(结果),#返回是元组   ,,,,,,,#打印(“查询原表数据成功!“,表名)   ,,,,,except  BaseException  as  e:   ,,,,,,,印刷(“查询原表数据失败!“,,,str (e))   ,,,,,,,#记录异常日志   ,,,,,,,updatetime_n =, time.strftime (& # 39; Y % - % - % d  % H: % m: % & # 39;,, time.localtime (time.time ()))   ,,,,,,,eachline_log =, updatetime_n  +, & # 39;[埃罗]:& # 39;,+,tablename  +, str (e), +, & # 39; \ n # 39;   ,,,,,,,content_log.append (eachline_log)   ,,,,,,,recode_log (content_log)   ,,,,,db.close ()      ,,,,,if 结果:   ,,,,,,,印刷(“===============================================================================?   ,,,,,,,印刷(“有数据可同步“,表名)   ,,,,,,,db =, pymysql.connect(主机=host_o,端口=port_o,用户=user_o, passwd=passwd_o, db=db_o, charset=& # 39; use utf8 # 39;,, cursorclass=pymysql.cursors.SSDictCursor)   ,,,,,,,cursor =, db.cursor ()   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

python如何实现不同数据库间数据同步功能