| 
														
															@@ -1,35 +1,33 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-from decimal import Decimal, InvalidOperation 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import xlrd 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import pymysql 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from datetime import datetime 
														 | 
														
														 | 
														
															 from datetime import datetime 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import xlrd 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from crossborder.utils.db_helper import DBHelper 
														 | 
														
														 | 
														
															 from crossborder.utils.db_helper import DBHelper 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from crossborder.utils.parse_utils import convert_unit, parse_ratio 
														 | 
														
														 | 
														
															 from crossborder.utils.parse_utils import convert_unit, parse_ratio 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 def get_upsert_sql(): 
														 | 
														
														 | 
														
															 def get_upsert_sql(): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    """生成带更新条件的SQL语句""" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    """使用命名占位符并正确使用VALUES函数的SQL""" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return """ 
														 | 
														
														 | 
														
															     return """ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    INSERT INTO t_yujin_crossborder_yearly_summary  
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    (year, year_total, year_import, year_export, trade_balance,  
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-     yoy_import_export, yoy_import, yoy_export, create_time) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    ON DUPLICATE KEY UPDATE 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        year_total = VALUES(year_total), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        year_import = VALUES(year_import), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        year_export = VALUES(year_export), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        trade_balance = VALUES(trade_balance), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        yoy_import_export = VALUES(yoy_import_export), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        yoy_import = VALUES(yoy_import), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        yoy_export = VALUES(yoy_export), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        create_time = VALUES(create_time) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    """ 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           INSERT INTO t_yujin_crossborder_yearly_summary 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           (year, year_total, year_import, year_export, trade_balance, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            yoy_import_export, yoy_import, yoy_export, create_time) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           VALUES (:year, :year_total, :year_import, :year_export, :trade_balance, \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                   :yoy_import_export, :yoy_import, :yoy_export, :create_time) ON DUPLICATE KEY \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           UPDATE \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+               year_total = \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           VALUES (year_total), year_import = \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           VALUES (year_import), year_export = \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           VALUES (year_export), trade_balance = \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           VALUES (trade_balance), yoy_import_export = \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           VALUES (yoy_import_export), yoy_import = \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           VALUES (yoy_import), yoy_export = \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           VALUES (yoy_export), create_time = \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           VALUES (create_time) \ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+           """ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 def parse_year_table_excel(file): 
														 | 
														
														 | 
														
															 def parse_year_table_excel(file): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     db_helper = DBHelper() 
														 | 
														
														 | 
														
															     db_helper = DBHelper() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     # 读取Excel文件 
														 | 
														
														 | 
														
															     # 读取Excel文件 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     try: 
														 | 
														
														 | 
														
															     try: 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -40,7 +38,6 @@ def parse_year_table_excel(file): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return 
														 | 
														
														 | 
														
															         return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     sql = get_upsert_sql() 
														 | 
														
														 | 
														
															     sql = get_upsert_sql() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     params_list = [] 
														 | 
														
														 | 
														
															     params_list = [] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     for row_idx in range(5, sheet.nrows): 
														 | 
														
														 | 
														
															     for row_idx in range(5, sheet.nrows): 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -48,20 +45,19 @@ def parse_year_table_excel(file): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         if not row[1]:  # 跳过空年份 
														 | 
														
														 | 
														
															         if not row[1]:  # 跳过空年份 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             continue 
														 | 
														
														 | 
														
															             continue 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        # 准备数据 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        params = ( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            row[1],  # year 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            convert_unit(row[2]),  # year_total 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            convert_unit(row[4]),  # year_import 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            convert_unit(row[3]),  # year_export 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            convert_unit(row[5]),  # trade_balance 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            parse_ratio(row[6]),   # yoy_import_export 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            parse_ratio(row[7]),   # yoy_import 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            parse_ratio(row[8]),   # yoy_export 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            current_time           # create_time 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        ) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        params_list.append(params) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        # 准备数据 - 使用字典 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        param_dict = { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            "year": row[1], 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            "year_total": convert_unit(row[2]), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            "year_import": convert_unit(row[4]), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            "year_export": convert_unit(row[3]), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            "trade_balance": convert_unit(row[5]), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            "yoy_import_export": parse_ratio(row[6]), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            "yoy_import": parse_ratio(row[7]), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            "yoy_export": parse_ratio(row[8]), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            "create_time": current_time 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        params_list.append(param_dict) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     # 使用 DBHelper 执行 SQL 插入 
														 | 
														
														 | 
														
															     # 使用 DBHelper 执行 SQL 插入 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     try: 
														 | 
														
														 | 
														
															     try: 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -69,7 +65,8 @@ def parse_year_table_excel(file): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         print(f"成功处理 {len(params_list)} 条数据,受影响行数:{affected_rows}") 
														 | 
														
														 | 
														
															         print(f"成功处理 {len(params_list)} 条数据,受影响行数:{affected_rows}") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     except Exception as e: 
														 | 
														
														 | 
														
															     except Exception as e: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         print(f"数据库操作失败: {e}") 
														 | 
														
														 | 
														
															         print(f"数据库操作失败: {e}") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        raise 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 if __name__ == "__main__": 
														 | 
														
														 | 
														
															 if __name__ == "__main__": 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    parse_year_table_excel('../src/downloads/20250513/(1)2025年进出口商品总值表_A年度表_3月.xls') 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    parse_year_table_excel(r'D:\pythonSpace\crossborder\downloads\total\2025\04\(1)2025年进出口商品总值表 A-年度表.xls') 
														 |