from sqlalchemy import Column, Integer, String, DateTime class Checkpoint: """观测点数据表结构定义 - 动态分表""" @staticmethod def get_table_name(account_id: int) -> str: return f"checkpoint_{account_id}" @staticmethod def get_create_sql(account_id: int) -> str: table_name = Checkpoint.get_table_name(account_id) return f""" CREATE TABLE IF NOT EXISTS `{table_name}` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '观察点名称', `burial_date` datetime DEFAULT NULL COMMENT '埋设日期', `objstate` varchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '测点状态', `monitoring_type` varchar(100) DEFAULT NULL COMMENT '监测类型', `period_number` int DEFAULT NULL COMMENT '量测期次', `first_time` datetime DEFAULT NULL COMMENT '首测时间', `manufacturer` varchar(100) DEFAULT NULL COMMENT '负责厂商', `point_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '测点编码', `point_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '观察点id', `section_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '所属断面id', PRIMARY KEY (`id`), KEY `idx_point_id` (`point_id`), KEY `idx_section_id` (`section_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='观测点数据表'; """