import sqlite3 from loguru import logger as log def init_database(): conn = sqlite3.connect('products.db') cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS Product ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, image_path TEXT ) ''') cursor.execute(''' CREATE TABLE IF NOT EXISTS Param ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, val TEXT NOT NULL ) ''') cursor.execute(''' CREATE TABLE IF NOT EXISTS Val ( id INTEGER PRIMARY KEY AUTOINCREMENT, val TEXT NOT NULL ) ''') cursor.execute(''' CREATE TABLE IF NOT EXISTS CParams ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL ) ''') cursor.execute(''' CREATE TABLE IF NOT EXISTS Category ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, image_path TEXT ) ''') cursor.execute(''' CREATE TABLE IF NOT EXISTS Product_Param ( product_id INTEGER, param_id INTEGER, PRIMARY KEY (product_id, param_id), FOREIGN KEY (product_id) REFERENCES Product (id), FOREIGN KEY (param_id) REFERENCES Param (id) ) ''') cursor.execute(''' CREATE TABLE IF NOT EXISTS Category_CParams ( category_id INTEGER, cparams_id INTEGER, PRIMARY KEY (category_id, cparams_id), FOREIGN KEY (category_id) REFERENCES Category (id), FOREIGN KEY (cparams_id) REFERENCES CParams (id) ) ''') cursor.execute(''' CREATE TABLE IF NOT EXISTS CParams_Val ( cparams_id INTEGER, val_id INTEGER, PRIMARY KEY (cparams_id, val_id), FOREIGN KEY (cparams_id) REFERENCES CParams (id), FOREIGN KEY (val_id) REFERENCES Val (id) ) ''') conn.commit() conn.close() log.info("База данных успешно инициализирована!")