table clear fixed
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@
|
||||
docker-compose.yml
|
||||
*.db
|
||||
__*
|
||||
*.json
|
||||
13
database.py
13
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}")
|
||||
|
||||
Reference in New Issue
Block a user