| 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]} |
|
|