From a8051455a86f322830b0a776dd8f169defe61cf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Sun, 23 Feb 2025 16:26:17 +0800 Subject: [PATCH] 'commit' --- SyncData/C2_SyncData.py | 30 ++++++++++++++++-- .../mysql_connector.cpython-310.pyc | Bin 860 -> 858 bytes .../__pycache__/data_mapper.cpython-310.pyc | Bin 3860 -> 3865 bytes SyncData/publish.py | 4 --- .../__pycache__/sync_service.cpython-310.pyc | Bin 8332 -> 8345 bytes SyncData/services/sync_service.py | 8 ++--- .../utils/__pycache__/logger.cpython-310.pyc | Bin 431 -> 429 bytes 7 files changed, 30 insertions(+), 12 deletions(-) diff --git a/SyncData/C2_SyncData.py b/SyncData/C2_SyncData.py index 4d7a6209..dcdb0f94 100644 --- a/SyncData/C2_SyncData.py +++ b/SyncData/C2_SyncData.py @@ -1,16 +1,35 @@ +import logging +from enum import Enum from connectors.mysql_connector import MySQLConnector from connectors.clickhouse_connector import ClickHouseConnector from mappers.data_mapper import DataMapper -from services.sync_service import SyncService, SyncType +from services.sync_service import SyncService from utils.logger import configure_logger from apscheduler.schedulers.background import BackgroundScheduler import time +from config.db_config import MYSQL_CONFIG, CH_CONFIG, print_config + + +# 定义同步类型的枚举 +class SyncType(Enum): + FULL = "full" + INCREMENTAL = "incremental" + +# 配置日志记录 logger = configure_logger() -from config.db_config import MYSQL_CONFIG, CH_CONFIG, print_config + +# 添加文件处理器 +file_handler = logging.FileHandler('sync.log') +file_handler.setLevel(logging.INFO) +formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') +file_handler.setFormatter(formatter) +logger.addHandler(file_handler) def sync(tableName, sync_type_id): + logger.info(f"开始同步表: {tableName}, 同步类型: {sync_type_id.value}") + # 初始化组件 mysql_conn = MySQLConnector(MYSQL_CONFIG) ch_conn = ClickHouseConnector(CH_CONFIG) @@ -18,6 +37,7 @@ def sync(tableName, sync_type_id): if sync_type_id == SyncType.FULL: # 清空目标表 ch_conn.connect().execute(f"TRUNCATE TABLE {tableName}") + logger.info(f"已清空目标表: {tableName}") ch_conn.disconnect() # 创建数据映射器(不再需要手动指定列) @@ -33,13 +53,17 @@ def sync(tableName, sync_type_id): try: # 同步数据 service.sync_data(batch_size=5000, table=tableName, - sync_type=sync_type_id) + sync_type=sync_type_id) # 确保这里传递的是 SyncType 枚举 + logger.info(f"同步成功: {tableName}") except Exception as e: logger.error(f"同步失败: {str(e)}", exc_info=True) finally: ch_conn.disconnect() + tables = ['t_station', 't_equipment', 't_equipment_charge_order'] + + def full_sync(): for table in tables: sync(table, SyncType.FULL) diff --git a/SyncData/connectors/__pycache__/mysql_connector.cpython-310.pyc b/SyncData/connectors/__pycache__/mysql_connector.cpython-310.pyc index 8ad206f0645ee27aa00257b71865ad7954f470ed..a2813c7a4905484cf43356d218b138d009c03523 100644 GIT binary patch delta 55 zcmcb^c8iTSpO=@50SM-I?n>{U$oo*n(#0w!r8qplC_5%FGcVmIKQBEdxH2!ccs@&`G4;oXA(q##)eARGhl8V;7^0k&9JKN^y98QFcsVW?s5a zeqMS^aAjVyOJYglB#^0$UrS`sQ$UaYjai z$@v^d7_By&a5gaU-eLnAT~x#jv~cnP?&FM(n>%>27#Z^>f99RZ$UeE3Pfvh9C9x#6 Tv?Mb}52AST5k6mLMj>VZQusCH delta 169 zcmbO!H${#wpO=@50SM-|?n-|lFp;mAovk3Ts5rG~WBV>fITIJFn3Ur1{G#lbz|6dK zpZvV^80VbKUXm+E;=%X=&>~ zP&bNQh!+GYLc6e{3&jpnaN$CzEB}IaDLyvhMku%t@0m)J&f<5!x!*bW%sF@FV~=Cr zlA^dd_H=K&9kKSk_KrdDXgrcL%h?hc&-IQLN7AL@NG>y59F7+%1^Ng=P-nk^H2|M| zQ&MA|pUiBSkA!QGP$K~aH;I)6a7kP-#2TBMG`br5%CzzSEKPtaKJ;mgl zN6V%X7Zcj3sYNvcZ0iDvGLkO(xqezTP=*mP#A!q~B92JVIbTO8!sLK!qEN2nM@`~K zqX&^fY*jtUWX}HT^YD$))F93oA3x1O(_LD`FFMmV3? zhRQ%}Ys%?XM8j#h2~{5=fXE^)A+RbLKwM_f71D}&s|BV8Jd?BK8x#4-!VLY?s&yFX zIwKiEl}8*zTtRqis7G~{;e&lF*ar~<-)lFZi~q{3i^HX2ajS=I`9+qrX|L_+0T`r; zs>?~X@tdQaYQNrz2jXu)@Ky*8nm7Y;8p6s1(@B!PQ-e@XH`GHd&WL#26%fvJoNE}P LZQ6B#ZxH_geZje~ delta 855 zcmYk4Ur1AN6vywm+r8G@wVNBZrn%e5VikiPvb5CsXF1EFj5OEUkWK75y{q3N%&|AGXe2fSp>7jFOg5HPEzW033pWpB7zU-XutSM-k zN5Y3cd^=_~y{Q?8w&tGJRL&kMuzc!@X^r(4tg%%0gqh7J3e)yz${uAiW_Hw0*+nax z*?NoKE;1F{c!hwE0JWm%S^;PfhN1#Q_!0FH92RTpZ-8U`)vokh8gon1vQ&aHl%x!l zTvPJ6D=#x2M%^VS$z>U&ocpTeI0`xjI_gemsw#(di&9ReTKuIR%A&NSK7jiWQKr{% zh{xD^Dvwt;%JY@yYn6r9-}%DsGC%2A*H2@L?WKcPd1M_t;;&~}h8Di0H9`k}rv;Q| zG!x>hwh5uLC}+LKP$E7MH_V*TZZN>mCDw*y?fmDSnd%ObVM2^sdVoLCqm3>2nyi`_ zv8OU-j`_(vN9ZNclm`2d8G&CthncY z21)|us@PZ8FIOiiVSsRhTY(6q`HMhUxsHJ~@jlQhLmS@=hN{~s<2>O4KU9BljykZ* zg#85Pcn3*2qdQ4;5xNP^&D^A7ggU}CLVz$x7$VSAHcUt%A{whF{r?K6lHSRpeP<#w zIdYf(s5gS!x4cPt^mVYKgbe?n`IJ7CpF~%~AcS}97lRS^cH?jEY{9Z{pHwl4<{$Cp zKrcX&2SX7xjsXdHUuZab1{I^fm7OBcGMTdk=g>5ZQ8}X$R^znOQSRj%q2obkA2K;E Rg0l)|=O&LDw_L7Tyq=jipO=@50SLNVccs7B$ScSwr|V)BlTsX>Uz8man3W~tR