diff --git a/.gitignore b/.gitignore index c361c47..956ece1 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ .env docker-compose.yml *.db -__* \ No newline at end of file +__* +*.json \ No newline at end of file diff --git a/database.py b/database.py index 0ceb3bf..b4624b0 100644 --- a/database.py +++ b/database.py @@ -2,6 +2,7 @@ import sqlite3 import logging +import os # Настройка логирования для модуля БД log = logging.getLogger(__name__) @@ -15,6 +16,16 @@ class DatabaseManager: self.db_path = db_path self.conn = None + # Проверяем, существует ли директория для файла БД, и создаем ее, если нет. + db_dir = os.path.dirname(self.db_path) + if db_dir and not os.path.exists(db_dir): + try: + os.makedirs(db_dir) + log.info(f"Создана директория для базы данных: {db_dir}") + except OSError as e: + log.error(f"Не удалось создать директорию для БД {db_dir}: {e}") + raise # Перевыбрасываем исключение, так как без директории работа невозможна + def __enter__(self): """Открывает соединение с БД при входе в контекстный менеджер.""" try: @@ -122,7 +133,7 @@ class DatabaseManager: log.info(f"Очистка таблиц: {', '.join(table_names)}") for table in table_names: # Проверяем, что имя таблицы "безопасное" - if table.isalnum(): + if all(c.isalnum() or c == '_' for c in table): self._execute_query(f"DELETE FROM {table}") else: log.warning(f"Попытка очистить таблицу с некорректным именем: {table}")