import sqlite3 from loguru import logger as log from db.DBDataUtils import add_category, add_filter, add_product, parse_product_data from db.InitializeDB import init_database def init_tables(db_name='pipe_store.db'): init_database(db_name) conn = sqlite3.connect(db_name) cursor = conn.cursor() cursor.execute('SELECT COUNT(*) FROM categories') category_count = cursor.fetchone()[0] if category_count > 0: log.info("Данные уже существуют в базе данных, пропускаем добавление") conn.close() return log.info("Начинаем заполнение базы данных...") main_category_id = add_category(conn, "Трубы ПВХ", "Трубы ПВХ для канализации") internal_category_id = add_category(conn, "Для внутренней канализации", "Трубы для внутренней канализации", main_category_id) external_category_id = add_category(conn, "Для наружной канализации", "Трубы для наружной канализации", main_category_id) log.info("Категории созданы успешно") add_filter(conn, "Диаметр", "diameter", "multiple") add_filter(conn, "Длина", "length", "multiple") add_filter(conn, "Тип применения", "application_type", "single") add_filter(conn, "Цвет", "color", "single") add_filter(conn, "Класс жесткости", "stiffness_class", "single") add_filter(conn, "Толщина стенки", "wall_thickness", "multiple") log.info("Фильтры добавлены успешно") products_data = [ "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), со сплошной внутренней стенкой толщиной 2,2 мм 110х2,2х500", "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), со сплошной внутренней стенкой толщиной 2,2 мм 110х2,2х1000", "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), со сплошной внутренней стенкой толщиной 2,2 мм 110х2,2х1500", "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), со сплошной внутренней стенкой толщиной 2,2 мм 110х2,2х2000", "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), со сплошной внутренней стенкой толщиной 2,2 мм 110х2,2х3000", "Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости SN4 110х3,2х500", "Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости SN4 110х3,2х1000", "Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости SN4 110х3,2х2000", "Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости SN4 110х3,2х3000", "Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости SN4 110х3,2х4000", "Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости SN2 160х3,6х1000", "Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости SN2 160х3,6х2000", "Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости SN2 160х3,6х3000" ] added_products = 0 for product_text in products_data: if "ВНУТРЕННЕЙ" in product_text: category_id = internal_category_id else: category_id = external_category_id product_id = add_product(conn, product_text, category_id) if product_id: added_products += 1 log.info(f"Добавлен товар: {product_text[:50]}...") else: log.error(f"Ошибка при добавлении товара: {product_text}") conn.commit() conn.close() log.success(f"Успешно добавлено {added_products} товаров в базу данных!")