You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.3 KiB

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@Date:2022/08/26 14:00:05
'''
import sys
sys.path.append('.')
import threading
import time
from timing.utils import DbManager
from models.user_models import EntityUser, EntityUserFace
from models.client_models import EntityClientCellUser, EntityClientUser
from db_logic.client_cell_user import BllClientCellUser
from db_logic.user import BllUser
from db_logic.client_user import BllClientUser
from db_logic.user_face import BllUserFace
from Common.Utils import Utils
class TimingBase(object):
time_sleep = 60
timing_status = True
db_list = ["rms_client_cell_user",
"rms_client_user",
"rms_user",
"rms_user_face"
]
def get_db_obj(self, table_name):
dic = {
"rms_client_cell_user": BllClientCellUser(),
"rms_client_user": BllClientUser(),
"rms_user": BllUser(),
"rms_user_face": EntityUserFace()
}
return dic.get(table_name)
def get_db_table(self, table_name):
dic = {
"rms_client_cell_user": EntityClientCellUser(),
"rms_client_user": EntityClientUser(),
"rms_user": EntityUser(),
"rms_user_face": BllUserFace()
}
return dic.get(table_name)
def sync_db(self):
while self.timing_status:
try:
db_manager = DbManager()
for i in self.db_list:
local_data = self.get_db_obj(i)
if not local_data:
continue
data_list = local_data.execute(
f"select * from {i}").fetchall()
if not data_list:
continue
data_list = Utils.msyql_table_model(data_list)
# db_manager.insert_ignore(
# **{"table": i, "data": data_list, "update_obj": local_data})
db_manager.insert_ignore_update(
**{"table": i, "data": data_list})
finally:
db_manager.close()
time.sleep(self.time_sleep)
def start(self):
p = threading.Thread(target=self.sync_db, daemon=True)
p.start()
def stop(self):
self.timing_status = False