
- •Домашнее задание
- •1.1. Разработать каркас для процесса Работа с классификатором изделий.
- •1.2. Содержание работы
- •1.3. Исходные данные для задачи
- •1.4. Рекомендуемые инструменты
- •1.5. Рекомендуемые источники
- •Аннотация
- •1. Описание выполненной работы
- •1.1. Введение
- •1.2. Анализ исходных данных
- •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. Проверка на цикл при изменении родителя подкатегории
- •2.2.15. Изменение родителя подкатегории
- •2.2.16. Изменение имени категории
- •2.2.17. Изменение имени изделия
- •2.2.18. Получение всех предков подкатегории
- •2.2.19. Получение всех подкатегорий категории
- •2.2.20. Вывод всех подкатегорий категории
- •2.2.21. Получение всех изделий категории
- •2.2.22. Удаление всех таблиц
- •2.2.23. Получение названия родителя у подкатегории
- •2.2.24. Заполнение базы данных контрольным примером
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}" нет дочерних элементов')