用python写个mysql-webservice同步工具

项目地址:https://github.com/chengyu2333/mysql2webservice

好像这是个看起来很智障的工具。。
你应该会说webservice直接调用数据库不就行了嘛。。
然鹅就是有这么个需求:
1.数据库的结构和api提供的接口并不是对应关系
2.数据源是第三方提供的,并且是不断更新的
3.在同步的过程中有时会对原始数据做一些处理
所以只好写了个通用的工具┑( ̄Д  ̄)┍

Feature

多线程,出错重试
支持增量更新,增量更新需要满足以下条件:

  • 数据库中有递增字段
  • webservice提供获取最新一条数据的接口

Tip

  • 执行一次脚本只检测并同步一次,可结合crontab或其他任务调度工具
  • 一般情况下只需要配置一下config.py文件,不需改动代码

config.py示例

 

db = {
    "host": "localhost",
    "user": "root",
    "password": "root",
    "db_name": "test",
    "port": 3366
}

enable_thread = True  # 启用线程
thread_pool_size = 1  # 线程池大小
cache_size = 1  # 缓存大小
timeout = 1  # post超时时间
# 出错重试次数
retry_post = 3
retry_mysql = 3
print_log = True  # 输出日志到控制台

tables = {
    "stas_date_info1": {
        "post_url": "http://192.168.1.92:8004/api/date/",
        "get_url": "",
        # 对比标志,必须是递增字段
        "cmp_field": "CTIME",  # 用于对比的字段名(数据库)
        "cmp_arg": "ctime",  # 用于对比的参数名(get的数据)
        "cmp_field_second": "SEQ",  # 第二判定条件,为空则不启用
        "cmp_arg_second": "seq",

        "strict": False,  # 严格模式将仅同步配置的map中的字段
        "lower": True,  # 将column转小写,只在非严格模式下有效
        # 数据库字段和POST参数映射关系,默认使用column作为post参数
        "map": {
            # 格式 column:post argument
            "CTIME": "ctime",
            "SEQ": "seq",
            "MTIME": "mtime",
            "STARTDATE": "startdate",
            "ENDDATE": "enddate",
            "ISS_ID": "iss_id",
            "DATE_TYPE_CODE":"date_type_code",
            "COMCODE":"comcode",
            "IF_INTERVAL":"if_interval",
            "ISVALID": "isvalid",
            "GENIUS_UID": "genius_uid"
        }
    },
    "stas_achieve_report": {
        "post_url": "http://192.168.1.92:8004/api/date/",
        "get_url": "",
        "cmp_field": "CTIME",
        "cmp_arg": "ctime",
        "cmp_field_second": "",
        "cmp_arg_second": "",
        "strict": False,
        "lower": True,
        "map": {
            # 如果未启用严格模式,且数据库和post字段完全对应,那么这里不用配置
        }
    }
}

发表评论

[/0o0] [..^v^..] [0_0] [T.T] [=3-❤] [❤.❤] [^v^] [-.0] [!- -] [=x=] [→_→] [><] 更多 »
昵称

抢沙发~