
- •Домашнее задание
- •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.11. Удаление изделия
функция: delete_product - удаление изделия
-- вход:
-- 1. product_name - название изделия
-- выход: нет
-- эффекты:
-- 1. удаление изделия
-- требования:
-- 1. изделие должно существовать
def delete_product(product_name):
try:
# Удаление изделия
cursor.execute("DELETE FROM product WHERE product_name = ?", (product_name,))
rows_deleted = cursor.rowcount
if rows_deleted > 0:
print('Изделие успешно удалено.')
else:
print('Изделие с указанным названием не найдено.')
conn.commit()
except Exception as _ex:
print(f"Произошла ошибка при удалении изделия: {_ex}")
2.2.12. Удаление категории
функция: delete_category - удаление категории
-- вход:
-- 1. category_name - название категории
-- выход: нет
-- эффекты:
-- 1. удаление категории
-- требования:
-- 1. категория должна существовать
def delete_category(category_name):
try:
if is_category_exists(category_name):
# Получаем идентификатор удаляемой категории
cursor.execute("SELECT id FROM category WHERE category_name = ?;", (category_name,))
delete_id = cursor.fetchone()[0]
# Перемещаем все подкатегории удаляемой категории в категорию "неопределенные"
cursor.execute("UPDATE category SET id_parent = (SELECT id FROM category WHERE category_name = 'неопределенные') WHERE id_parent = ?", (delete_id,))
# Перемещаем все изделия удаляемой категории в категорию "неопределенные"
cursor.execute("UPDATE product SET id_category = (SELECT id FROM category WHERE category_name = 'неопределенные') WHERE id_category = ?", (delete_id,))
# Удаляем категорию
cursor.execute("DELETE FROM category WHERE id = ?", (delete_id,))
conn.commit()
print('Категория успешно удалена.')
else:
print('Указанная категория не существует.')
except Exception as _ex:
print(f"Произошла ошибка при удалении категории: {_ex}")
2.2.13. Удаление подкатегории
функция: delete_subcategory - удаление подкатегории
-- вход:
-- 1. subcategory_name - название подкатегории
-- выход: нет
-- эффекты:
-- 1. удаление подкатегории
-- требования:
-- 1. существование подкатегории
def delete_subcategory(subcategory_name):
try:
if is_category_exists(subcategory_name):
# Получаем идентификатор удаляемой подкатегории
cursor.execute("SELECT id FROM category WHERE category_name = ?", (subcategory_name,))
subcategory_id = cursor.fetchone()[0]
# Перемещаем связанные изделия в категорию "неопределенные"
cursor.execute("UPDATE product SET id_category = (SELECT id FROM category WHERE category_name = 'неопределенные') WHERE id_category = ?", (subcategory_id,))
# Перемещаем связанные подкатегории в категорию "неопределенные"
cursor.execute("UPDATE category SET id_parent = (SELECT id FROM category WHERE category_name = 'неопределенные') WHERE id_parent = ?", (subcategory_id,))
# Удаляем подкатегорию
cursor.execute("DELETE FROM category WHERE id = ?", (subcategory_id,))
conn.commit()
print('Подкатегория успешно удалена.')
else:
print('Указанная подкатегория не существует.')
except Exception as _ex:
print(f"Произошла ошибка при удалении подкатегории: {_ex}")