
- •Домашнее задание
- •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.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}")