feat: add TDengine connector + schema modules with tests

This commit is contained in:
张宗平
2026-06-11 15:38:59 +08:00
parent 0788daf2af
commit 7d1c03b98d
3 changed files with 276 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
"""TDengine DDL 模块:supertable / subtable 创建。"""
import logging
logger = logging.getLogger(__name__)
def create_database(conn, db_name: str = "ts_anomaly") -> None:
"""创建数据库(不存在时创建)。"""
conn.execute_no_result(f"CREATE DATABASE IF NOT EXISTS {db_name} KEEP 36500")
logger.info("database %s ready", db_name)
def use_database(conn, db_name: str = "ts_anomaly") -> None:
"""切换到指定数据库。"""
conn.execute_no_result(f"USE {db_name}")
def create_supertable(conn, stable: str) -> None:
"""创建 supertable(不存在时创建)。
Args:
stable: 数据集名称,如 finance_001
"""
sql = (
f"CREATE STABLE IF NOT EXISTS ds_{stable} "
f"(ts TIMESTAMP, value DOUBLE, label INT) "
f"TAGS (series_id INT)"
)
conn.execute_no_result(sql)
logger.info("supertable ds_%s ready", stable)
def create_subtable(conn, stable: str, series_id: int = 1) -> None:
"""创建 subtable(不存在时创建)。
Args:
stable: 数据集名称
series_id: 时序 ID(单变量数据集为 1)
"""
sql = (
f"CREATE TABLE IF NOT EXISTS s_{stable} "
f"USING ds_{stable} TAGS ({series_id})"
)
conn.execute_no_result(sql)
logger.info("subtable s_%s ready (series_id=%d)", stable, series_id)
def setup_schema(conn, stable: str, db_name: str = "ts_anomaly") -> None:
"""一键建库建表。
Args:
conn: TDConnection 实例
stable: 数据集名称
db_name: 数据库名称
"""
create_database(conn, db_name)
use_database(conn, db_name)
create_supertable(conn, stable)
create_subtable(conn, stable)