
- •Задание на работу
- •Аннотация
- •Описание выполненной работы
- •1.1 Анализ исходных данных
- •2. Создание базы данных
- •2.2. Разработка основных процедур
- •2.2.1. Проверка на существование единицы измерения
- •2.2.2. Добавление единицы измерения
- •2.2.3. Проверка класса перечисления на существование
- •2.2.4 Проверка перечисления на существование
- •2.2.5. Добавление перечисления
- •2.2.6. Удаление класса перечислений
- •2.2.7. Удаление перечисления
- •2.2.8. Изменение перечисления
- •2.2.9. Изменение приоритета вывода записей находящихся на одном уровне
- •2.2.10. Поиск списка перечислений заданного класса и его вывод
- •2.2.11. Добавление класса перечисления
- •2.2.12. Изменение приоритета конкретного перечисления
- •2.2.13. Проверка классов перечисления на цикл
- •2.2.14. Изменение родителя класса перечисления
- •3. Тестирование
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