table clear fixed
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -2,4 +2,5 @@
|
|||||||
.env
|
.env
|
||||||
docker-compose.yml
|
docker-compose.yml
|
||||||
*.db
|
*.db
|
||||||
__*
|
__*
|
||||||
|
*.json
|
||||||
13
database.py
13
database.py
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
|
|
||||||
# Настройка логирования для модуля БД
|
# Настройка логирования для модуля БД
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
@@ -15,6 +16,16 @@ class DatabaseManager:
|
|||||||
self.db_path = db_path
|
self.db_path = db_path
|
||||||
self.conn = None
|
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):
|
def __enter__(self):
|
||||||
"""Открывает соединение с БД при входе в контекстный менеджер."""
|
"""Открывает соединение с БД при входе в контекстный менеджер."""
|
||||||
try:
|
try:
|
||||||
@@ -122,7 +133,7 @@ class DatabaseManager:
|
|||||||
log.info(f"Очистка таблиц: {', '.join(table_names)}")
|
log.info(f"Очистка таблиц: {', '.join(table_names)}")
|
||||||
for table in 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}")
|
self._execute_query(f"DELETE FROM {table}")
|
||||||
else:
|
else:
|
||||||
log.warning(f"Попытка очистить таблицу с некорректным именем: {table}")
|
log.warning(f"Попытка очистить таблицу с некорректным именем: {table}")
|
||||||
|
|||||||
Reference in New Issue
Block a user