Spaces:
Runtime error
Runtime error
Download backend/database.py from IDKHowToCodeFr/tinyml-backend: direct link, hf CLI and curl.
- Browser
- Download file 2.43 kB
-
https://huggingface.co/spaces/IDKHowToCodeFr/tinyml-backend/resolve/0db9e5fcc09c057c0bbef4fb56e06d1874460afc/backend/database.py
- Command line
-
hf download hf://spaces/IDKHowToCodeFr/tinyml-backend@0db9e5fcc09c057c0bbef4fb56e06d1874460afc/backend/database.py
-
curl -L -o database.py https://huggingface.co/spaces/IDKHowToCodeFr/tinyml-backend/resolve/0db9e5fcc09c057c0bbef4fb56e06d1874460afc/backend/database.py
2.43 kB
| import aiosqlite | |
| import os | |
| from datetime import datetime | |
| import zoneinfo | |
| from typing import List, Dict, Any | |
| from config import settings | |
| DB_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), settings.db_name) | |
| async def init_db() -> None: | |
| async with aiosqlite.connect(DB_PATH, timeout=20.0) as db: | |
| await db.execute("PRAGMA busy_timeout = 10000;") | |
| try: | |
| await db.execute("PRAGMA journal_mode=WAL;") | |
| except Exception: | |
| pass | |
| await db.execute("PRAGMA synchronous=NORMAL;") | |
| await db.execute(''' | |
| CREATE TABLE IF NOT EXISTS predictions ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| timestamp DATETIME, | |
| heart_rate REAL, | |
| spo2 REAL, | |
| sys_bp REAL, | |
| dia_bp REAL, | |
| temp REAL, | |
| prediction_label TEXT, | |
| confidence REAL | |
| ) | |
| ''') | |
| await db.commit() | |
| async def log_prediction(data: Any, prediction_label: str, confidence: float) -> None: | |
| async with aiosqlite.connect(DB_PATH, timeout=20.0) as db: | |
| await db.execute("PRAGMA busy_timeout = 10000;") | |
| try: | |
| ist = zoneinfo.ZoneInfo("Asia/Kolkata") | |
| ts = datetime.now(ist).strftime("%Y-%m-%d %H:%M:%S") | |
| except Exception: | |
| ts = datetime.now().strftime("%Y-%m-%d %H:%M:%S") | |
| await db.execute(''' | |
| INSERT INTO predictions (timestamp, heart_rate, spo2, sys_bp, dia_bp, temp, prediction_label, confidence) | |
| VALUES (?, ?, ?, ?, ?, ?, ?, ?) | |
| ''', ( | |
| ts, | |
| getattr(data, "Heart_Rate", 0.0), | |
| getattr(data, "SpO2_Level", 0.0), | |
| getattr(data, "Systolic_BP", 0.0), | |
| getattr(data, "Diastolic_BP", 0.0), | |
| getattr(data, "Body_Temp", 0.0), | |
| prediction_label, | |
| confidence | |
| )) | |
| await db.commit() | |
| async def get_history() -> List[Dict[str, Any]]: | |
| if not os.path.exists(DB_PATH): | |
| return [] | |
| async with aiosqlite.connect(DB_PATH, timeout=20.0) as db: | |
| await db.execute("PRAGMA busy_timeout = 10000;") | |
| db.row_factory = aiosqlite.Row | |
| async with db.execute('SELECT * FROM predictions ORDER BY timestamp DESC LIMIT 100') as cursor: | |
| rows = await cursor.fetchall() | |
| return [dict(row) for row in rows] | |