怎样利用python实现mysql数据库向sqlserver的同步
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,这期内容当中小编将会给大家带来有关怎样利用python实现mysql数据库向sqlserver的同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。话不多说,直接上代
千家信息网最后更新 2025年02月08日怎样利用python实现mysql数据库向sqlserver的同步
这期内容当中小编将会给大家带来有关怎样利用python实现mysql数据库向sqlserver的同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
话不多说,直接上代码。
#!/usr/bin/python# -*- coding:utf8 -*-# author: chenzhixin""" 一、安装环境: python3 pip install pymysql pip 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>&1 b) 日志位置 tail -f /var/log/sync_mobile_kaoqin.log 四、测试sql: mysql执行 select * from oa_2016.formmain_5027 sqlserver上执行 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 conn finally: 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 conn finally: 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的同步了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
数据
手机
数据库
打卡
同步
语句
考勤
任务
内容
日志
分析
专业
中小
代码
位置
内容丰富
功能
增量
就是
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器的开发与管理
厦门市建立困难群体数据库
id连接服务器失败
毕业设计国家数据库
眼镜行业软件开发一般收费
网络安全由哪个部门统一监管
徐州拉钩网络技术
绝地求生自己开服务器
剑三电信服务器
网络安全意识的口号
怎么下载服务器的系统
网络安全模式鼠标不能用
数据库中查询先行课
flink同步关系数据库
办理服务器托管需要什么手续
根据已有数据库自动填充车牌号
受西方发达国家网络技术垄断
我的世界里的科技服务器
mysql 已有数据库
河北第三方网络技术怎么样
护苗网络安全教育学校总结
软件开发代理记账
数据库数据随机生成
网络安全专业高校2018
cknife 配置数据库
夏绅互联网科技
fct软件开发教程
网络技术心得
最强族长与中国网络安全
腾讯云数据库怎么创建