from sqlalchemy import Column, BigInteger, String, DateTime class MeasurementData: """量测数据表结构定义 - 动态分表""" @staticmethod def get_table_name(account_id: int) -> str: return f"measurement_data_{account_id}" @staticmethod def get_create_sql(account_id: int) -> str: table_name = MeasurementData.get_table_name(account_id) return f""" CREATE TABLE IF NOT EXISTS `{table_name}` ( `id` bigint NOT NULL AUTO_INCREMENT, `monitoring_time` datetime DEFAULT NULL COMMENT '监测时间', `upload_time` datetime DEFAULT NULL COMMENT '上传时间', `monitoring_value` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '监测值(m)', `deformation_value` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '变形值(mm)', `time_interval` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '时间间隔(h)', `cumulative_deformation` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '累计变形量(mm)', `deformation_rate` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '变形速率(mm/d)', `distance_working_face` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '距掌子面距离(m)', `point_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '测点id', PRIMARY KEY (`id`), KEY `idx_point_id` (`point_id`), KEY `idx_monitoring_time` (`monitoring_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='量测数据'; """