Python 定时同步远程数据库的某个表中数据到另一个数据库的某个表(版本2)

通过记录最后更新ID来去获取新数据同步MYSQL

# -*- coding: utf-8 -*-
import pymysql
import sys

#用自动任务的坑,不加这个自动任务跑不起,坑了我好久哇。
reload(sys)
sys.setdefaultencoding('utf8')

#第一步打开本地ID记录文本
record_id =open('test1.txt', 'r+')


#最后一步获取更新后的ID记录到TXT
def record():
    db =pymysql.connect('远端数据库IP', '用户', '密码', '库',端口,charset='utf8')
    cursor = db.cursor()
    sql= "select  id from t_sqapp_newuser_flow order by id desc limit 1"
    cursor.execute(sql)
    results = cursor.fetchall()
    for row in results:
        id = row[0]
        record_id.write(str(id))
    db.close()


#第三步通过本地ID去远端查询是否有新数据
def readAndWrite(old_id):
    db =pymysql.connect('远端数据库IP', '用户', '密码', '库',端口,charset='utf8')
    cursor = db.cursor()
    sql= "select * from 表 where id > %s " % (old_id)
    cursor.execute(sql)
    results = cursor.fetchall()

    for value in results:
        write=pymysql.connect('127.0.0.1','root','密码','库',charset='utf8')
        Wcursor =write.cursor()
        writeSql = "INSERT INTO 本地表(“列1”,“列2”,“列3”,“列4”,) " \
                    "VALUE ('%s', '%s', '%s', '%s')" %\
                    (value[1], value[2], value[3], value[4])
        print(writeSql)
        try:
            Wcursor.execute(writeSql)
            write.commit()
        except:
            write.rollback()
        write.close()
    cursor.close()
    db.close()


#第一步查看本地数据现在ID是多少
s=record_id .read()
print(s)

#第二步通过本地ID去远端查询是否有新数据
readAndWrite(s)

#清空文本文件
record_id.seek(0)
record_id.truncate()



#最后一步获取更新后的ID记录到TXT
record()

#关闭文本
record_id.close()



猜你喜欢

转载自blog.csdn.net/liyyzz33/article/details/84303990
今日推荐