| import sqlite3 | |
| from sqlite3 import Error | |
| from .utils import validate_sql | |
| import logging | |
| class Database: | |
| def __init__(self, db_path='data/database.sqlite'): | |
| self.db_path = db_path | |
| def execute_query(self, query): | |
| logging.info(f"Executing SQL: {query}") | |
| if not validate_sql(query): | |
| return {"error": "Invalid SQL query. Only SELECT queries are allowed at this point."} | |
| try: | |
| conn = sqlite3.connect(self.db_path) | |
| cursor = conn.cursor() | |
| cursor.execute(query) | |
| results = cursor.fetchall() | |
| columns = [desc[0] for desc in cursor.description] | |
| conn.close() | |
| return {"columns": columns, "data": results} | |
| except Error as e: | |
| logging.error(f"SQL Error: {str(e)}") | |
| return {"error": str(e)} |