61 lines
7.1 KiB
Python
61 lines
7.1 KiB
Python
import sqlite3
|
|
import json
|
|
from loguru import logger as log
|
|
|
|
def add_products():
|
|
conn = sqlite3.connect('products.db')
|
|
cursor = conn.cursor()
|
|
|
|
cursor.execute('SELECT COUNT(*) FROM Category')
|
|
category_count = cursor.fetchone()[0]
|
|
|
|
if category_count > 0:
|
|
log.info("Категории уже существуют в базе данных, пропускаем добавление")
|
|
conn.close()
|
|
return
|
|
|
|
categories_data = [
|
|
('Внутренняя канализация', [["Диаметр", "string"], ["Длина", "string"], ["Толщина стенки", "string"], ["Цвет", "string"]]),
|
|
('Наружная канализация', [["Диаметр", "string"], ["Длина", "string"], ["Толщина стенки", "string"], ["Класс жесткости", "string"], ["Цвет", "string"]])
|
|
]
|
|
|
|
category_ids = {}
|
|
for name, atributes in categories_data:
|
|
atributes_json = json.dumps(atributes)
|
|
cursor.execute(
|
|
'INSERT INTO Category (name, atributes) VALUES (?, ?)',
|
|
(name, atributes_json)
|
|
)
|
|
category_ids[name] = cursor.lastrowid
|
|
log.info(f"Добавлена категория: {name}")
|
|
|
|
products_data = [
|
|
('Труба ПВХ 110x2,25000', 'Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), со сплошной внутренней стенкой толщиной 2,2 мм. Размер: 110x2,25000. Количество в упаковке: 4 шт.', 'images/internal_110_1.jpg', '110x2,25000', 'Внутренняя канализация'),
|
|
('Труба ПВХ 110x2,25000', 'Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), со сплошной внутренней стенкой толщиной 2,2 мм. Размер: 110x2,25000. Количество в упаковке: 4 шт.', 'images/internal_110_2.jpg', '110x2,25000', 'Внутренняя канализация'),
|
|
('Труба ПВХ 110x2,25000', 'Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), со сплошной внутренней стенкой толщиной 2,2 мм. Размер: 110x2,25000. Количество в упаковке: 4 шт.', 'images/internal_110_3.jpg', '110x2,25000', 'Внутренняя канализация'),
|
|
('Труба ПВХ 110x2,25000', 'Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), со сплошной внутренней стенкой толщиной 2,2 мм. Размер: 110x2,25000. Количество в упаковке: 4 шт.', 'images/internal_110_4.jpg', '110x2,25000', 'Внутренняя канализация'),
|
|
('Труба ПВХ 110x2,25000', 'Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), со сплошной внутренней стенкой толщиной 2,2 мм. Размер: 110x2,25000. Количество в упаковке: 4 шт.', 'images/internal_110_5.jpg', '110x2,25000', 'Внутренняя канализация'),
|
|
('Труба ПВХ 110x3,25000', 'Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости 8мм. Размер: 110x3,25000. Количество в упаковке: 4 шт.', 'images/external_110_1.jpg', '110x3,25000', 'Наружная канализация'),
|
|
('Труба ПВХ 110x3,25000', 'Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости 8мм. Размер: 110x3,25000. Количество в упаковке: 4 шт.', 'images/external_110_2.jpg', '110x3,25000', 'Наружная канализация'),
|
|
('Труба ПВХ 110x3,25000', 'Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости 8мм. Размер: 110x3,25000. Количество в упаковке: 4 шт.', 'images/external_110_3.jpg', '110x3,25000', 'Наружная канализация'),
|
|
('Труба ПВХ 110x3,25000', 'Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости 8мм. Размер: 110x3,25000. Количество в упаковке: 4 шт.', 'images/external_110_4.jpg', '110x3,25000', 'Наружная канализация'),
|
|
('Труба ПВХ 110x3,25000', 'Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости 8мм. Размер: 110x3,25000. Количество в упаковке: 4 шт.', 'images/external_110_5.jpg', '110x3,25000', 'Наружная канализация'),
|
|
('Труба ПВХ 160x3,50000', 'Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости 8мм. Размер: 160x3,50000. Количество в упаковке: 2 шт.', 'images/external_160_1.jpg', '160x3,50000', 'Наружная канализация'),
|
|
('Труба ПВХ 160x3,50000', 'Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости 8мм. Размер: 160x3,50000. Количество в упаковке: 2 шт.', 'images/external_160_2.jpg', '160x3,50000', 'Наружная канализация'),
|
|
('Труба ПВХ 160x3,50000', 'Труба ПВХ для НАРУЖНОЙ канализации (цвет коричнево-оранжевый), со сплошной внутренней стенкой, класс жесткости 8мм. Размер: 160x3,50000. Количество в упаковке: 2 шт.', 'images/external_160_3.jpg', '160x3,50000', 'Наружная канализация'),
|
|
]
|
|
|
|
for name, desc, image_path, size, category_name in products_data:
|
|
cursor.execute('SELECT id FROM Category WHERE name = ?', (category_name,))
|
|
category_row = cursor.fetchone()
|
|
if category_row:
|
|
category_id = category_row[0]
|
|
cursor.execute(
|
|
'INSERT INTO Product (name, category, desc, image_path, size) VALUES (?, ?, ?, ?, ?)',
|
|
(name, category_id, desc, image_path, size)
|
|
)
|
|
|
|
conn.commit()
|
|
conn.close()
|
|
log.info(f"Добавлено {len(products_data)} товаров в базу данных!")
|