有感于微课数据同步多次 也与云上的不一致问题,大家的思路不清楚是主要原因。

import requests
import json
# pip install requests

scheme_id=105887
start_num=0
limit_count=20
v_count=0

# 同步的思路

# 1、通过 CREATE TABLE A LIKE B 这样的方式,对要同步的微课表进行创建目标表的镜像,当然,可以是多张表,如果以前生成过, 建议采用 drop table if exists tablename 删除掉这些临时表

# 2、通过云主机的接口,获取指定版本下的微课,记录进临时表,并记录通过接口同步下来的个数。

# 3、对比临时表中的数据个数与通过脚本记录的同步接口提供的数据个数,是否完全一致,如果不一致,则为同步端异常,如果一致,表示同步端正确

# 4、检查无误后,删除正式表中指定版本下东师理想提供的微课,然后将临时表中的微课数据执行  INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name

# 5、执行预热等操作

# 6、记录日志,本版本的ID,版本的名称,学科的名称,阿里云上同步下来的微课个数,实际插入的微课个数,是否匹配等,以备查验。

while True :
    url='http://www.edusoa.com/dsideal_yy/wkds/getWkdsInfoByScheme?scheme_id='+str(scheme_id)+'&start_num='+str(start_num)+'&limit_count='+str(limit_count)
    r = requests.get(url)
    strA=str(r.content, encoding = "utf-8")

    if len(strA)>0:
        try:
            jsonA=json.loads(strA)
            for c in jsonA["wkdsList"]:
                v_count = v_count + 1
                start_num = int(c["ID"])
        except Exception as e:
            print(str(start_num)+'异常终止!')
            break
    else :
        break
    print('版本号'+str(scheme_id)+'   已同步微课数量:'+str(v_count)+'个!')

 同步数据,不加校验机制,就绝对不行的,切记切记!

原文地址:https://www.cnblogs.com/littlehb/p/7460657.html