
- •Домашнее задание
- •1.2. Содержание работы
- •1.3. Исходные данные для задачи
- •1.4. Рекомендуемые инструменты
- •1.5. Рекомендуемые источники
- •Аннотация
- •Описание выполненной работы
- •1.1 Анализ исходных данных
- •1.2. Разработка функциональных требований к подсистеме
- •1.3. Разработка модели классов
- •2.1.3. Код создания таблицы "enum"
- •2.1.4. Код создания таблицы "product"
- •2.1.5. Код создания таблицы "param"
- •2.1.6. Код создания таблицы "class_param"
- •2.1.7. Код создания таблицы "prod_param"
- •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. Функция нахождения id параметров у изделия
- •2.2.12. Функция поиска изделий заданного класса параметра
- •2.2.13. Функция поиска изделия с заданным параметром в заданном интервале
2.2.6. Функция удаления класса параметра
функция: delete_class_param - функция удаления класса параметра
-- вход:
-- 1. class_to_delete - имя класса к удалению
-- выход: нет
-- эффекты:
-- 1. удаление класса параметра
-- требования:
-- 1. класс параметра должен существовать
def delete_class_param(class_to_delete):
try:
cursor.execute('''SELECT id FROM terminal_classifier WHERE terminal_classifier_name = ? ''', (class_to_delete,))
exists = cursor.fetchone()
if not exists:
print(f'Ошибка в delete_class_param: Класса параметра с таким названием не существует')
return 0
if (class_to_delete == 'неопределенный параметр класса' or class_to_delete == 'параметр класса'):
print(f"Нельзя удалить параметр класса \'неопределенный параметр класса\' или \'параметр класса\'")
return 0
# Проверка на наличие дочерних элементов
is_children_exist = get_category_children(class_to_delete)
print(f'is_children_exist - {is_children_exist}')
if not is_children_exist:
cursor.execute("DELETE FROM class_param WHERE param_class_name = ?", (class_to_delete,))
conn.commit()
cursor.execute("DELETE FROM terminal_classifier WHERE terminal_classifier_name = ?", (class_to_delete,))
conn.commit()
else:
cursor.execute('''SELECT id FROM terminal_classifier WHERE terminal_classifier_name = ? ''', (class_to_delete,))
id_class_to_delete = cursor.fetchone()[0]
print(f'class_to_delete - {class_to_delete}')
print(f'id_class_to_delete - {id_class_to_delete}')
cursor.execute("SELECT id FROM class_param WHERE class_param_id = ? ", (id_class_to_delete,))
children = cursor.fetchall()
print(f'children (id) - {children}')
cursor.execute('''SELECT id FROM terminal_classifier WHERE terminal_classifier_name = ? ''', ('неопределенный параметр класса',))
undef_class_id = cursor.fetchone()[0]
children_info_rows = []
for child in children:
print(f'child - {child}')
cursor.execute('''SELECT param_class_name FROM class_param WHERE id = ? ''', (child[0],))
child_name = cursor.fetchone()[0]
print(f'child_name - {child_name}')
cursor.execute('''SELECT * FROM class_param WHERE id = ?''', (child[0],))
child_row = cursor.fetchone()[0]
children_info_rows.append(child_row)
cursor.execute("UPDATE class_param SET class_param_id = ? WHERE id = ?", (undef_class_id, child[0]))
change_parent_of_terminal_classifier(child_name, 'неопределенный параметр класса')
conn.commit()
cursor.execute("DELETE FROM class_param WHERE param_class_name = ?", (class_to_delete,))
conn.commit()
cursor.execute("DELETE FROM terminal_classifier WHERE terminal_classifier_name = ?", (class_to_delete,))
conn.commit()
print(f'children_info_rows - {children_info_rows}')
conn.commit()
print("Удаление завершено успешно")
return 1
except sqlite3.IntegrityError as e:
print(f"Ошибка в delete_class_param: {e}")
conn.rollback()
return 0