完成timescaledb获取在线模拟数据的方法

This commit is contained in:
JIANG
2025-12-09 17:11:20 +08:00
parent b6c1ff1878
commit 18fc564efc
7 changed files with 93 additions and 39 deletions

View File

@@ -149,13 +149,13 @@ class SchemeRepository:
raise ValueError(f"Invalid field: {field}")
query = sql.SQL(
"SELECT {} FROM scheme.link_simulation WHERE scheme_type = %s AND scheme_name = %s AND time >= %s AND time <= %s"
"SELECT id, {} FROM scheme.link_simulation WHERE scheme_type = %s AND scheme_name = %s AND time >= %s AND time <= %s"
).format(sql.Identifier(field))
async with conn.cursor() as cur:
await cur.execute(query, (scheme_type, scheme_name, start_time, end_time))
row = await cur.fetchone()
return row[field] if row else None
rows = await cur.fetchall()
return [{"id": row["id"], "value": row[field]} for row in rows]
@staticmethod
async def update_link_field(
@@ -313,13 +313,13 @@ class SchemeRepository:
raise ValueError(f"Invalid field: {field}")
query = sql.SQL(
"SELECT {} FROM scheme.node_simulation WHERE scheme_type = %s AND scheme_name = %s AND time >= %s AND time <= %s"
"SELECT id, {} FROM scheme.node_simulation WHERE scheme_type = %s AND scheme_name = %s AND time >= %s AND time <= %s"
).format(sql.Identifier(field))
async with conn.cursor() as cur:
await cur.execute(query, (scheme_type, scheme_name, start_time, end_time))
row = await cur.fetchone()
return row[field] if row else None
rows = await cur.fetchall()
return [{"id": row["id"], "value": row[field]} for row in rows]
@staticmethod
async def update_node_field(
@@ -599,16 +599,20 @@ class SchemeRepository:
# Query based on type
if type.lower() == "node":
return await SchemeRepository.get_nodes_field_by_scheme_and_time_range(
data = await SchemeRepository.get_nodes_field_by_scheme_and_time_range(
conn, scheme_type, scheme_name, start_time, end_time, property
)
elif type.lower() == "link":
return await SchemeRepository.get_links_field_by_scheme_and_time_range(
data = await SchemeRepository.get_links_field_by_scheme_and_time_range(
conn, scheme_type, scheme_name, start_time, end_time, property
)
else:
raise ValueError(f"Invalid type: {type}. Must be 'node' or 'link'")
# Format the results
results = [{"ID": item["id"], "value": item["value"]} for item in data]
return {"results": results}
@staticmethod
async def query_scheme_simulation_result_by_ID_time(
conn: AsyncConnection,