广告
返回顶部
首页 > 资讯 > 数据库 >怎样利用python实现mysql数据库向sqlserver的同步
  • 712
分享到

怎样利用python实现mysql数据库向sqlserver的同步

2023-06-02 02:06:26 712人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关怎样利用python实现mysql数据库向sqlserver的同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。    话不多说,

这期内容当中小编将会给大家带来有关怎样利用python实现mysql数据库sqlserver的同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

    话不多说,直接上代码。

#!/usr/bin/Python# -*- coding:utf8 -*-# author: chenzhixin"""一、安装环境:python3pip install pyMysqlpip install pymssql二、实现功能:将mysql的oa_2016.fORMmain_5027(手机打卡记录)数据,增量同步到sqlserver数据库的kaoqin.CHECKINOUT中三、运行方法:a)定时任务[root@oadb1 shell]# crontab -l* * * * *  python -W ignore /usr/local/shell/sync_mobile_kaoqin.py >> /var/log/sync_mobile_kaoqin.log 2>&1b) 日志位置tail  -f /var/log/sync_mobile_kaoqin.log四、测试sql:mysql执行select * from oa_2016.formmain_5027sqlserver上执行select * from CHECKINOUT where sn='手机端打卡'"""from contextlib import contextmanagerimport pymysql as mysqldbimport pymssql as mssqldbimport time@contextmanagerdef get_mysql_conn(**kwargs):"""建立MySQL数据库连接:param kwargs::return:"""conn = mysqldb.connect(host=kwargs.get('host', 'localhost'),user=kwargs.get('user'),passWord=kwargs.get('password'),port=kwargs.get('port', 3306),database=kwargs.get('database'))try:yield connfinally:if conn:conn.close()@contextmanagerdef get_mssql_conn(**kwargs):"""建立sqlserver数据库连接:param kwargs::return:"""conn = mssqldb.connect(server=kwargs.get('host'),user=kwargs.get('user'),password=kwargs.get('password'),database=kwargs.get('database'))try:yield connfinally:if conn:conn.closedef execute_mysql_select_sql(conn, sql):"""执行mysql的select类型语句:param conn::param sql::return:"""with conn as cur:cur.execute(sql)rows = cur.fetchall()return rowsdef execute_mysql_sql(conn, sql):"""执行mysql的dml和ddl语句,不包括select语句:param conn::param sql::return:"""with conn as cur:cur.execute(sql)def execute_mssql_sql(conn, sql):"""执行sqlserver的dml和ddl语句,不包含select语句:param conn::param sql::return:"""with conn.cursor() as cur:cur.execute(sql)conn.commit()def get_mysql_kaoqin_data(conn):"""获取mysql的考勤数据:param conn::return:"""sql = "select * from formmain_5027 where field0008 is null or field0008=''"mysql_kaoqin_data_rows = execute_mysql_select_sql(conn, sql)return mysql_kaoqin_data_rowsdef mysql_sync_to_sqlserver(mysql_conn, mssql_conn, data):"""把mysql的考勤数据同步到sqlserver数据库里面:param mysql_conn::param mssql_conn::param data::return:"""for index, row in enumerate(data, 1):ID=row[0]state=row[1]start_member_id=row[2]start_date=row[3]approve_member_id=row[4]approve_date=row[5]finishedflag=row[6]ratifyflag=row[7]ratify_member_id=row[8]ratify_date=row[9]sort=row[10]modify_member_id=row[11]modify_date=row[12]field0001=row[13]field0002=row[14]field0003=row[15]field0004=row[16]field0005=row[17]field0006=row[18]field0007=row[19]field0008=row[20]field0009=row[21]        #向sqlserver插入数据insert_data = """INSERT INTO [kaoqin].[dbo].[CHECKINOUT]   ([USERID]   ,[CHECKTIME]   ,[CHECKTYPE]   ,[VERIFYCODE]   ,[SENSORID]   ,[Memoinfo]   ,[WorkCode]   ,[sn]   ,[UserExtFmt]   ,[Synced]) VALUES((select userid from USERINFO where BADGENUMBER='{userid}'),   '{CHECKTIME}', 'I',    1,      1,   NULL,   0,      '手机端打卡',   0,      null)""".format(userid=field0002, CHECKTIME=start_date)execute_mssql_sql(mssql_conn, insert_data)print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))print('###############第{}条手机打卡记录###############\n'.format(index), insert_data)marked_sql = "update formmain_5027 set field0008='synced' where id={}".format(ID)execute_mysql_sql(mysql_conn, marked_sql)def main():mysql_conn_args = dict(user='root', host='127.0.0.1',  password='*******', database='oa_2016')mssql_conn_args = dict(host='172.x.x.x', user='sa', password='********', database='kaoqin')with get_mysql_conn(**mysql_conn_args) as mysql_conn:mysql_data = get_mysql_kaoqin_data(mysql_conn)with get_mssql_conn(**mssql_conn_args) as mssql_conn:mysql_sync_to_sqlserver(mysql_conn, mssql_conn, mysql_data)if __name__ == '__main__':main()

定时任务:

[root@oadb1 shell]# crontab -l#定时同步手机考勤给sqlserver* * * * *  python -W ignore /usr/local/shell/sync_mobile_kaoqin.py >> /var/log/sync_mobile_kaoqin.log 2>&1

日志:

[root@oadb1 shell]# tail -100f /var/log/sync_mobile_kaoqin.log 2019-10-20 09:04:01###############第1条手机打卡记录############### INSERT INTO [kaoqin].[dbo].[CHECKINOUT]   ([USERID]   ,[CHECKTIME]   ,[CHECKTYPE]   ,[VERIFYCODE]   ,[SENSORID]   ,[Memoinfo]   ,[WorkCode]   ,[sn]   ,[UserExtFmt]   ,[Synced]) VALUES((select userid from USERINFO where BADGENUMBER='1234'),   '2019-10-19 14:50:25', 'I',    1,      1,   NULL,   0,      '手机端打卡',   0,      null)

上述就是小编为大家分享的怎样利用python实现mysql数据库向sqlserver的同步了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: 怎样利用python实现mysql数据库向sqlserver的同步

本文链接: https://www.lsjlt.com/news/228541.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎样利用python实现mysql数据库向sqlserver的同步
    这期内容当中小编将会给大家带来有关怎样利用python实现mysql数据库向sqlserver的同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。    话不多说,...
    99+
    2023-06-02
  • mysql数据库中怎么实现双向同步热备
    本篇文章为大家展示了mysql数据库中怎么实现双向同步热备,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 环境: Master server: 10.224.1...
    99+
    2022-10-18
  • 怎么利用数据库触发器实现数据的同步
    本篇内容主要讲解“怎么利用数据库触发器实现数据的同步”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用数据库触发器实现数据的同步”吧!一、什么是触发器数据库...
    99+
    2022-10-18
  • Mysql数据库中怎么实现数据同步
    Mysql数据库中怎么实现数据同步,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 安装配置两台服务器,分别安装好Mysql,都安装在 /u...
    99+
    2022-10-18
  • MySQL数据库中怎么实现同步
    本篇文章给大家分享的是有关MySQL数据库中怎么实现同步,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  1.修改 master 端的my.c...
    99+
    2022-10-18
  • MySQL中怎么实现多库数据同步
    本篇文章为大家展示了MySQL中怎么实现多库数据同步,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、建立测试环境CREATE table mother(id in...
    99+
    2022-10-18
  • Canal中怎么实现MySQL数据库实时数据同步
    这期内容当中小编将会给大家带来有关Canal中怎么实现MySQL数据库实时数据同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.1 canal介绍Canal是一个基于...
    99+
    2022-10-18
  • MySQL数据库中怎么实现异构数据同步
    本篇文章为大家展示了MySQL数据库中怎么实现异构数据同步,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在实现levelDB挂载成MySQL引擎时,发现在实际存储是...
    99+
    2022-10-18
  • Mysql 中怎么实现主从数据库同步
    这篇文章给大家介绍Mysql 中怎么实现主从数据库同步,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、主服务器1.1、创建一个复制用户,具有replication slave 权限。...
    99+
    2022-10-18
  • 通过logstash实现mysql与es的双向数据同步
    参考题目 一种基于MySQL和Elasticsearch的数据同步方法及系统基于MySQL和Elasticsearch的数据同步方法一种基于MySQL和Elasticsearch的数据同步系统基于MySQL和Elasticsearch...
    99+
    2023-09-11
    logstash mysql es elasticSearch linux
  • MYSQL数据库主从同步设置的实现步骤
    目录为什么要主从同步?主从同步的原理MYSQL数据库进行主从同步创建两个MYSQL数据库初始化,安装主机数据库配置从机测试主从同步为什么要主从同步? 1、读写分离 主从同步分为一个主...
    99+
    2022-11-13
  • MySQL数据库主从同步的实现方法
    这篇文章主要讲解了MySQL数据库主从同步的实现方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。安装环境说明系统环境:[root@~]# cat /etc/redhat-re...
    99+
    2022-10-18
  • 【赵强老师】利用数据库触发器实现数据的同步
    一、什么是触发器 数据库触发器是一个与表相关联的,存储的PL/SQL 语句。每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义的语句序列。 触发器的应用场景如...
    99+
    2022-04-11
    【赵强老师】利用数据库触发器实现数据的同步
  • Qt怎么实现通用数据库同步
    这篇文章主要介绍“Qt怎么实现通用数据库同步”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Qt怎么实现通用数据库同步”文章能帮助大家解决问题。一、前言数据库同步的主要功能是将本地的数据库记录同步到远...
    99+
    2023-06-29
  • MySQL实验中不同字符集数据库迁移步骤是怎样的
    MySQL实验中不同字符集数据库迁移步骤是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。今天主要介绍下mysqldump怎么迁移编码...
    99+
    2022-10-19
  • MySQL数据库实现远程同步的工具alibaba otter
    本篇文章给大家主要讲的是关于MySQL数据库实现远程同步的工具alibaba otter的内容,感兴趣的话就一起来看看这篇文章吧,相信看完MySQL数据库实现远程同步的工具alibaba otter对大家多...
    99+
    2022-10-18
  • 使用Canal实现PHP应用程序与MySQL数据库的实时数据同步
    目录canal简介安装配置启动安装php与canal连接的组件简单示例结果展示canal简介 由阿里巴巴开源 github地址:https://github.com/alibaba/...
    99+
    2023-05-16
    PHP Canal PHP Canal数据同步
  • 利用MySQL开发实现实时数据同步的项目经验探讨
    利用MySQL开发实现实时数据同步的项目经验探讨引言随着互联网的迅速发展,数据的实时同步成为了各个系统之间的重要需求。MySQL作为一种常用的数据库管理系统,在实现实时数据同步方面具有广泛的应用。本文将探讨在开发过程中,利用MySQL实现实...
    99+
    2023-11-03
    实时数据 数据同步 MySQL开发 MySQL实时数据同步
  • python调用pymssql包操作SqlServer数据库的实现
    之前的文章介绍了python抓取网页数据并将数据保存到本地excel文件,后续可以将数据保存到数据库(SqlServer、mysql等)中,本文学习python中操作SqlServer数据库的基本用法,后续将从网页中抓取...
    99+
    2022-06-13
    pythonpymssql操作SqlServer python操作SqlServer
  • 使用datax实现增量同步mysql数据库数据(定时任务)
    使用datax来做数据全量同步很简单,增量同步该怎样做呢,接下来就一起试试吧 下载datax(前提CentOS已安装jdk等运行环境),解压(路径自定),使用centos7自带的python执行datax.py,运行自检 wget http...
    99+
    2023-09-22
    python json 开发语言 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作