优化数采查询代码

This commit is contained in:
mgw
2025-03-24 16:49:49 +08:00
parent 9df76253de
commit 62cd60ec06

View File

@@ -1130,7 +1130,7 @@ class Sf_Dashboard_Connect(http.Controller):
SELECT * FROM device_data SELECT * FROM device_data
WHERE device_name = %s WHERE device_name = %s
AND time::date = CURRENT_DATE AND time::date = CURRENT_DATE
AND device_state != '离线' AND device_state in ('离线')
ORDER BY time ASC ORDER BY time ASC
LIMIT 1; LIMIT 1;
""", (item,)) """, (item,))
@@ -1143,7 +1143,7 @@ class Sf_Dashboard_Connect(http.Controller):
SELECT * FROM device_data SELECT * FROM device_data
WHERE device_name = %s WHERE device_name = %s
AND time::date = CURRENT_DATE AND time::date = CURRENT_DATE
AND device_state != '离线' AND device_state in ('离线')
ORDER BY time DESC ORDER BY time DESC
LIMIT 1; LIMIT 1;
""", (item,)) """, (item,))
@@ -1161,25 +1161,25 @@ class Sf_Dashboard_Connect(http.Controller):
# 获取当月第一条记录排除device_state等于离线的记录 # 获取当月第一条记录排除device_state等于离线的记录
with conn.cursor() as cur: with conn.cursor() as cur:
cur.execute(""" cur.execute("""
SELECT * FROM device_data SELECT * FROM device_datas
WHERE device_name = %s WHERE device_name = %s
AND EXTRACT(YEAR FROM time) = EXTRACT(YEAR FROM CURRENT_DATE) AND time >= DATE_TRUNC('MONTH', CURRENT_DATE)
AND EXTRACT(MONTH FROM time) = EXTRACT(MONTH FROM CURRENT_DATE) AND time < DATE_TRUNC('MONTH', CURRENT_DATE) + INTERVAL '1 MONTH'
AND device_state != '离线' AND device_state in ('离线')
ORDER BY time ASC ORDER BY time ASC
LIMIT 1; LIMIT 1;
""", (item,)) """, (item,))
first_month = fetch_result_as_dict(cur) first_month = fetch_result_as_dict(cur)
# print("当月第一条记录(非离线):", first_month) # print("当月第一条记录:", first_month)
# 获取当月最新一条记录排除device_state等于离线的记录 # 获取当月最新一条记录
with conn.cursor() as cur: with conn.cursor() as cur:
cur.execute(""" cur.execute("""
SELECT * FROM device_data SELECT * FROM device_data
WHERE device_name = %s WHERE device_name = %s
AND EXTRACT(YEAR FROM time) = EXTRACT(YEAR FROM CURRENT_DATE) AND time >= DATE_TRUNC('MONTH', CURRENT_DATE)
AND EXTRACT(MONTH FROM time) = EXTRACT(MONTH FROM CURRENT_DATE) AND time < DATE_TRUNC('MONTH', CURRENT_DATE) + INTERVAL '1 MONTH'
AND device_state != '离线' AND device_state in ('离线')
ORDER BY time DESC ORDER BY time DESC
LIMIT 1; LIMIT 1;
""", (item,)) """, (item,))
@@ -1200,7 +1200,7 @@ class Sf_Dashboard_Connect(http.Controller):
cur.execute(""" cur.execute("""
SELECT * FROM device_data SELECT * FROM device_data
WHERE device_name = %s WHERE device_name = %s
AND device_state != '离线' AND device_state in ('离线')
ORDER BY time ASC ORDER BY time ASC
LIMIT 1; LIMIT 1;
""", (item,)) """, (item,))
@@ -1212,7 +1212,7 @@ class Sf_Dashboard_Connect(http.Controller):
cur.execute(""" cur.execute("""
SELECT * FROM device_data SELECT * FROM device_data
WHERE device_name = %s WHERE device_name = %s
AND device_state != '离线' AND device_state in ('离线')
ORDER BY time DESC ORDER BY time DESC
LIMIT 1; LIMIT 1;
""", (item,)) """, (item,))
@@ -1290,7 +1290,7 @@ class Sf_Dashboard_Connect(http.Controller):
cur.execute(""" cur.execute("""
SELECT * FROM device_data SELECT * FROM device_data
WHERE device_name = %s WHERE device_name = %s
AND device_state != '离线' AND process_time IS NOT NULL AND device_state in ('离线') AND process_time IS NOT NULL
ORDER BY time DESC ORDER BY time DESC
LIMIT 1; LIMIT 1;
""", (item,)) """, (item,))
@@ -1299,7 +1299,7 @@ class Sf_Dashboard_Connect(http.Controller):
cur.execute(""" cur.execute("""
SELECT * FROM device_data SELECT * FROM device_data
WHERE device_name = %s WHERE device_name = %s
AND device_state != '离线' AND time >= %s AND process_time IS NOT NULL AND device_state in ('离线') AND time >= %s AND process_time IS NOT NULL
ORDER BY time ASC ORDER BY time ASC
LIMIT 1; LIMIT 1;
""", (item, time_threshold)) """, (item, time_threshold))