Spaces:
Runtime error
Runtime error
Commit
·
c882e97
1
Parent(s):
8baf70b
chore: Add logging to main.py for error handling and debugging
Browse files
main.py
CHANGED
@@ -7,6 +7,9 @@ from pydantic import BaseModel
|
|
7 |
from data_loader import refresh_data
|
8 |
import numpy as np
|
9 |
from pandas import Timestamp
|
|
|
|
|
|
|
10 |
|
11 |
|
12 |
def get_db_connection():
|
@@ -18,7 +21,8 @@ def get_db_connection():
|
|
18 |
def setup_database():
|
19 |
conn = get_db_connection()
|
20 |
c = conn.cursor()
|
21 |
-
c.execute(
|
|
|
22 |
(hub_id TEXT PRIMARY KEY,
|
23 |
likes INTEGER,
|
24 |
downloads INTEGER,
|
@@ -29,7 +33,8 @@ def setup_database():
|
|
29 |
language TEXT,
|
30 |
config_name TEXT,
|
31 |
column_names TEXT,
|
32 |
-
features TEXT)"""
|
|
|
33 |
c.execute("CREATE INDEX IF NOT EXISTS idx_column_names ON datasets (column_names)")
|
34 |
conn.commit()
|
35 |
conn.close()
|
@@ -44,6 +49,7 @@ def serialize_numpy(obj):
|
|
44 |
return float(obj)
|
45 |
if isinstance(obj, Timestamp):
|
46 |
return int(obj.timestamp())
|
|
|
47 |
raise TypeError(f"Object of type {type(obj)} is not JSON serializable")
|
48 |
|
49 |
|
@@ -85,11 +91,15 @@ def insert_data(conn, data):
|
|
85 |
async def lifespan(app: FastAPI):
|
86 |
# Startup: Load data into the database
|
87 |
setup_database()
|
|
|
88 |
conn = get_db_connection()
|
|
|
89 |
datasets = refresh_data()
|
|
|
90 |
for data in datasets:
|
91 |
insert_data(conn, data)
|
92 |
conn.close()
|
|
|
93 |
yield
|
94 |
# Shutdown: You can add any cleanup operations here if needed
|
95 |
# For example, closing database connections, clearing caches, etc.
|
@@ -169,6 +179,7 @@ async def search_datasets(
|
|
169 |
)
|
170 |
|
171 |
except sqlite3.Error as e:
|
|
|
172 |
raise HTTPException(status_code=500, detail=f"Database error: {str(e)}") from e
|
173 |
finally:
|
174 |
conn.close()
|
|
|
7 |
from data_loader import refresh_data
|
8 |
import numpy as np
|
9 |
from pandas import Timestamp
|
10 |
+
import logging
|
11 |
+
|
12 |
+
logger = logging.getLogger(__name__)
|
13 |
|
14 |
|
15 |
def get_db_connection():
|
|
|
21 |
def setup_database():
|
22 |
conn = get_db_connection()
|
23 |
c = conn.cursor()
|
24 |
+
c.execute(
|
25 |
+
"""CREATE TABLE IF NOT EXISTS datasets
|
26 |
(hub_id TEXT PRIMARY KEY,
|
27 |
likes INTEGER,
|
28 |
downloads INTEGER,
|
|
|
33 |
language TEXT,
|
34 |
config_name TEXT,
|
35 |
column_names TEXT,
|
36 |
+
features TEXT)"""
|
37 |
+
)
|
38 |
c.execute("CREATE INDEX IF NOT EXISTS idx_column_names ON datasets (column_names)")
|
39 |
conn.commit()
|
40 |
conn.close()
|
|
|
49 |
return float(obj)
|
50 |
if isinstance(obj, Timestamp):
|
51 |
return int(obj.timestamp())
|
52 |
+
logger.error(f"Object of type {type(obj)} is not JSON serializable")
|
53 |
raise TypeError(f"Object of type {type(obj)} is not JSON serializable")
|
54 |
|
55 |
|
|
|
91 |
async def lifespan(app: FastAPI):
|
92 |
# Startup: Load data into the database
|
93 |
setup_database()
|
94 |
+
logger.info("Creating database connection")
|
95 |
conn = get_db_connection()
|
96 |
+
logger.info("Refreshing data")
|
97 |
datasets = refresh_data()
|
98 |
+
|
99 |
for data in datasets:
|
100 |
insert_data(conn, data)
|
101 |
conn.close()
|
102 |
+
logger.info("Data refreshed")
|
103 |
yield
|
104 |
# Shutdown: You can add any cleanup operations here if needed
|
105 |
# For example, closing database connections, clearing caches, etc.
|
|
|
179 |
)
|
180 |
|
181 |
except sqlite3.Error as e:
|
182 |
+
logger.error(f"Database error: {str(e)}")
|
183 |
raise HTTPException(status_code=500, detail=f"Database error: {str(e)}") from e
|
184 |
finally:
|
185 |
conn.close()
|