Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6 сем / 2 / МиСПрИС_1374_2_Наволоцкий_Харитонов_Зырянов.docx
Скачиваний:
9
Добавлен:
29.03.2025
Размер:
1.07 Mб
Скачать

2. Создание базы данных

2.1. Создание базы данных

path = "C:/Users/admin/source/repos/UNIVERSITY_repos/3 course/6 sem/mispris/2/furniture.db"

conn = sqlite3.connect(path)

cursor = conn.cursor()

print("\n\nDB has been created/connected\n")

conn.execute("PRAGMA foreign_keys = ON")

def create_category_table():

cursor.execute('''CREATE TABLE IF NOT EXISTS category

(id INTEGER PRIMARY KEY AUTOINCREMENT,

id_parent INTEGER,

category_name TEXT UNIQUE,

FOREIGN KEY (id_parent) REFERENCES category(id))''')

conn.commit()

def create_product_table():

cursor.execute('''

CREATE TABLE IF NOT EXISTS product (

id INTEGER PRIMARY KEY AUTOINCREMENT,

id_category INTEGER,

product_name TEXT NOT NULL,

quantity INTEGER DEFAULT 0,

price REAL DEFAULT 0,

unit_name_short TEXT,

unit_value REAL,

id_unit INTEGER,

FOREIGN KEY (id_unit) REFERENCES unit(id),

FOREIGN KEY (id_category) REFERENCES category(id)

)

''')

conn.commit()

def create_enum_classifier_table():

cursor.execute('''CREATE TABLE IF NOT EXISTS enum_classifier

(id INTEGER PRIMARY KEY AUTOINCREMENT,

id_parent INTEGER,

enum_classifier_name TEXT NOT NULL UNIQUE,

enum_classifier_short_name TEXT NOT NULL UNIQUE,

FOREIGN KEY (id_parent) REFERENCES enum_classifier(id))''')

conn.commit()

def create_enum_table():

cursor.execute('''CREATE TABLE IF NOT EXISTS enum

(id INTEGER PRIMARY KEY AUTOINCREMENT,

enum_id INTEGER,

enum_name TEXT NOT NULL,

enum_short_name TEXT NOT NULL,

enum_description TEXT,

real_value REAL,

int_value INTEGER,

pic_value TEXT,

id_unit INTEGER,

priority INTEGER NOT NULL DEFAULT 0,

FOREIGN KEY (id_unit) REFERENCES unit(id),

FOREIGN KEY (enum_id) REFERENCES enum_classifier(id))''')

conn.commit()

def create_unit_table():

cursor.execute('''CREATE TABLE IF NOT EXISTS unit

(id INTEGER PRIMARY KEY AUTOINCREMENT,

unit_name TEXT UNIQUE,

unit_name_short TEXT UNIQUE)''')

conn.commit()

def creating_tables():

create_category_table()

create_product_table()

create_enum_classifier_table()

create_enum_table()

create_unit_table()

creating_tables()

2.2. Разработка основных процедур

2.2.1. Проверка на существование единицы измерения

функция: is_unit_exist() - проверка существования единицы измерения

-- вход:

-- 1. unit_name_short - короткое название единицы измерения

-- выход:

-- 1. если существует вернет true, иначе - false

-- эффекты: нет

-- требования: нет

def is_unit_exist(unit_name_short):

cursor.execute("SELECT COUNT(*) FROM unit WHERE unit_name_short = ?", (unit_name_short,))

count = cursor.fetchone()[0]

res = count > 0

return res

Соседние файлы в папке 2