BloodGlucoseManagement / sqlite_handler.py
DeepWeek's picture
Upload sqlite_handler.py
d296a79 verified
import sqlite3
from datetime import datetime, timedelta, timezone
from config import LOCAL_DB_PATH
import hf_db_sync
import pandas as pd
DEFAULT_USER_ID = "0001"
def save_result_to_db(carb_grams, current_bg, icr, isf, result, actual_insulin, timing_id, timestamp_text=None):
hf_db_sync.download_and_prepare_db()
if timestamp_text:
try:
timestamp = datetime.strptime(timestamp_text, "%Y-%m-%d %H:%M")
except ValueError:
return "❌ 日時の形式が正しくありません(例: 2025-04-22 14:30)"
else:
JST = timezone(timedelta(hours=9))
timestamp = datetime.now(JST)
timestamp_str = timestamp.strftime('%Y-%m-%d %H:%M:%S')
conn = sqlite3.connect(LOCAL_DB_PATH)
cursor = conn.cursor()
cursor.execute("""
INSERT INTO records (
user_id, timestamp, carbs, current_bg, icr, isf,
carb_insulin, correction_insulin, total_insulin, target_bg, timing_id
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""", (
DEFAULT_USER_ID,
timestamp_str,
carb_grams,
current_bg,
icr,
isf,
result["carb_insulin"],
result["correction_insulin"],
actual_insulin,
result["expected_bg"],
timing_id
))
conn.commit()
conn.close()
hf_db_sync.upload_db_to_dataset()
return f"✅ 記録しました(インスリン {actual_insulin} 単位, タイミング ID: {timing_id})"
def load_records():
try:
hf_db_sync.download_and_prepare_db()
conn = sqlite3.connect(LOCAL_DB_PATH)
query = """
SELECT * FROM records ORDER BY timestamp
"""
df = pd.read_sql_query(query, conn)
conn.close()
if not df.empty:
df["timestamp"] = pd.to_datetime(df["timestamp"])
return df
except Exception as e:
print(f"❌ DB読み込みエラー: {e}")
return pd.DataFrame()