| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- # 配置类
- import os
- import sys
- from dataclasses import dataclass, field
- from typing import List, Optional
- # 添加项目根目录到Python路径
- sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
- @dataclass
- class DatabaseConfig:
- """数据库配置"""
- host: str = "192.168.50.234"
- port: int = 4000
- user: str = "root"
- password: str = "123456"
- database: str = "wind_data"
- charset: str = "utf8mb4"
-
- def get_connection_url(self) -> str:
- """获取SQLAlchemy连接URL"""
- return f"mysql+pymysql://{self.user}:{self.password}@{self.host}:{self.port}/{self.database}?charset={self.charset}"
- @dataclass
- class TableConfig:
- """表配置"""
- table_name: str = "data_scada_turbine"
- # 唯一键:id_farm + id_turbine + data_time
- unique_keys: List[str] = field(default_factory=lambda: ["id_farm", "id_turbine", "data_time"])
- # 备用时间字段名(如果找不到data_time时使用)
- time_column_aliases: List[str] = field(default_factory=lambda: [
- "data_time", "time", "timestamp", "datetime", "采集时间",
- "时间", "记录时间", "数据时间", "Time", "Timestamp"
- ])
-
- @dataclass
- class AppConfig:
- """应用配置"""
- base_path: str = r"F:\BaiduNetdiskDownload\标准化数据\stander_parquet"
- max_workers: int = 20 # 线程池大小
- batch_size: int = 1000 # 批量插入大小
- upsert_enabled: bool = True # 启用UPSERT
- data_time_column: Optional[str] = None # 实际数据中的时间字段名
- db_config: DatabaseConfig = None
- table_config: TableConfig = None
-
- def __post_init__(self):
- if self.db_config is None:
- self.db_config = DatabaseConfig()
- if self.table_config is None:
- self.table_config = TableConfig()
|