| import sqlite3 | |
| import pandas as pd | |
| CSV_PATH = "resources/data/hr/hr_data.csv" | |
| conn = sqlite3.connect("employees.db", check_same_thread=False) | |
| def init_db(): | |
| df = pd.read_csv(CSV_PATH) | |
| df.to_sql("employees", conn, if_exists="replace", index=False) | |
| print("✅ SQLite employees DB initialized.") | |
| def get_columns(): | |
| return pd.read_csv(CSV_PATH).columns.tolist() | |
| def run_sql(sql_query: str): | |
| forbidden = ["drop", "delete", "insert", "update", "alter", "truncate", "exec", "--", ";--"] | |
| if any(word in sql_query.lower() for word in forbidden): | |
| raise PermissionError("Unsafe SQL query detected and blocked.") | |
| cursor = conn.cursor() | |
| cursor.execute(sql_query) | |
| rows = cursor.fetchall() | |
| col_names = [desc[0] for desc in cursor.description] | |
| return {"columns": col_names, "rows": [list(r) for r in rows]} | |