52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
from flask import Blueprint, request, jsonify
|
||
import sqlite3
|
||
from collections import defaultdict
|
||
import traceback
|
||
|
||
bp = Blueprint('shi2', __name__)
|
||
|
||
|
||
def get_db_connection():
|
||
conn = sqlite3.connect('agriculture.db')
|
||
conn.row_factory = sqlite3.Row
|
||
return conn
|
||
|
||
|
||
@bp.route('/device-moisture', methods=['GET'])
|
||
def get_device_moisture_data():
|
||
# 固定查询2025-05-27的数据
|
||
query_date = '2025-05-27'
|
||
start_time = '00:00:00'
|
||
end_time = '23:59:59'
|
||
|
||
conn = get_db_connection()
|
||
try:
|
||
cur = conn.cursor()
|
||
# 修正表名和字段名,使用temperature_data表中的实际字段
|
||
cur.execute('''
|
||
SELECT device_id, humidity as moisture, timestamp
|
||
FROM temperature_data
|
||
WHERE DATE(timestamp) = ?
|
||
AND TIME(timestamp) BETWEEN ? AND ?
|
||
ORDER BY device_id, timestamp
|
||
''', (query_date, start_time, end_time))
|
||
|
||
rows = cur.fetchall()
|
||
|
||
# 按设备ID分组湿度数据(修正字段引用为humidity)
|
||
device_data = defaultdict(list)
|
||
for row in rows:
|
||
device_id = row['device_id']
|
||
moisture = float(row['moisture']) # 这里使用别名moisture
|
||
device_data[device_id].append(moisture)
|
||
|
||
if not device_data:
|
||
return jsonify({}), 200
|
||
|
||
return jsonify(device_data)
|
||
except Exception as e:
|
||
print(f"数据库查询错误: {str(e)}")
|
||
traceback.print_exc()
|
||
return jsonify({'error': '数据库查询失败,请检查日志'}), 500
|
||
finally:
|
||
conn.close() |