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

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

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

-- вход:

-- 1. category_name - имя категории

-- выход: все подкатегории категории

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

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

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

def get_category_children(category_name):

if is_category_exists(category_name):

try:

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

category_id = cursor.fetchone()[0]

# function for recursive search subcategories

def find_children(category_id, children_list):

childrens_id = 0

childrens_id = []

cursor.execute("SELECT COUNT(*) FROM category WHERE id_parent = ?", (category_id,))

record_exists = cursor.fetchall()

if record_exists:

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

childrens_id = cursor.fetchall()

if childrens_id == 0:

return

if category_id != 0 and childrens_id != 0:

for elem in childrens_id:

elem_id = elem[0]

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

child_name = cursor.fetchone()

children_list.append(child_name)

find_children(elem_id, children_list)

children_list = []

children_list_res = []

# begin search subcategories

find_children(category_id, children_list)

for elem in children_list:

if elem:

children_list_res.append(elem[0])

return children_list_res

except Exception as _ex:

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

else:

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

2.2.20. Вывод всех подкатегорий категории

функция: print_category_children - вывод всех подкатегорий категории

-- вход:

-- 1. category_name - имя категории

-- 2. order - порядок

-- выход: печать всех подкатегорий категории

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

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

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

def print_category_children(category_name, order):

if not is_category_exists(category_name):

print("Такой категории нет.")

return

children_list_res = get_category_children(category_name)

if children_list_res:

if order == 'прямой':

print(f'дочерние элементы для категории "{category_name}": \n {children_list_res}')

elif order == 'обратный':

print(f'дочерние элементы для категории "{category_name}": \n {children_list_res[::-1]}')

else:

print('Такого порядка вывода нет!')

else:

print(f'У категории "{category_name}" нет дочерних элементов')

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