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

2.2.21. Получение всех изделий категории

функция: get_products_of_category - получение всех изделий категории

-- вход:

-- 1. category_name - название категории

-- выход:

-- 1. все изделия категории

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

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

-- 1. существование категории

def get_products_of_category(category_name):

if is_category_exists(category_name):

try:

categories_to_check = get_category_children(category_name)

products = []

if categories_to_check:

for category in categories_to_check:

cursor.execute("SELECT id FROM category WHERE category_name = ?", (category,))

id_of_searched_category = cursor.fetchone()[0]

cursor.execute("SELECT id FROM product WHERE id_category = ?", (id_of_searched_category,))

products_id = cursor.fetchall()

for id in products_id:

cursor.execute("SELECT product_name FROM product WHERE id = ?", (id[0],))

product_to_add = cursor.fetchone()[0]

products.append(product_to_add)

else:

cursor.execute("SELECT id FROM category WHERE category_name = ?", (category_name,))

id_of_searched_category = cursor.fetchone()[0]

cursor.execute("SELECT id FROM product WHERE id_category = ?", (id_of_searched_category,))

products_id = cursor.fetchall()

for id in products_id:

cursor.execute("SELECT product_name FROM product WHERE id = ?", (id[0],))

product_to_add = cursor.fetchone()[0]

products.append(product_to_add)

return products

except Exception as _ex:

print(f"Произошла ошибка при поиске изделия заданной категории: {_ex}")

else:

print('Категории не существует.')

2.2.22. Удаление всех таблиц

функция:

-- вход: нет

-- выход: нет

-- эффекты:

-- 1. удаление всех таблиц из базы данных

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

def dropAllTables():

try:

# Список таблиц в порядке, в котором их нужно удалить (сначала те, которые не содержат внешних ключей)

tables_order = ['category', 'product', 'sqlite_sequence']

# Удаление данных из таблиц с внешними ключами

for table_name in tables_order[::-1]:

cursor.execute(f"DELETE FROM {table_name};")

# Удаление самих таблиц

cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%';")

tables = cursor.fetchall()

for table in tables:

table_name = table[0]

cursor.execute(f"DROP TABLE IF EXISTS {table_name};")

conn.commit()

print("Все таблицы успешно удалены.")

except Exception as _ex:

print(f"Произошла ошибка при удалении таблиц: {_ex}")

2.2.23. Получение названия родителя у подкатегории

функция: get_subcategory_parent - получение имени родителя у подкатегории

-- вход:

-- 1. subcategory_name - название подкатегории

-- выход:

-- 1. название категории родителя

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

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

-- 1. подкатегория должна существовать

def get_subcategory_parent(subcategory_name):

try:

if is_category_exists(subcategory_name):

cursor.execute("SELECT id_parent FROM category WHERE category_name = ?", (subcategory_name,))

id_parent_category_of_subcategory = cursor.fetchone()[0]

cursor.execute("SELECT category_name FROM category WHERE id = ?", (id_parent_category_of_subcategory,))

parent_category_name = cursor.fetchone()[0]

return parent_category_name

else:

print('Указанной подкатегории не существует!')

except Exception as _ex:

print(f"Произошла ошибка при получении родительской категории подкатегории: {_ex}")

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