
- •Задание на работу
- •Аннотация
- •Описание выполненной работы
- •1.1 Анализ исходных данных
- •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. Изменение родителя класса перечисления
- •3. Тестирование
2.2.6. Удаление класса перечислений
функция: delete_enum_classification() - удаление классов перечисления
-- вход:
-- 1. enum_classifier_name - имя класса
-- выход: нет
-- эффекты:
-- 1. удаление класса перечисления
-- 2. перенос всех дочерних классов в дети к классу 'неопределенные'
-- требования:
-- 1. класс должен существовать
def delete_enum_classification(enum_classifier_name):
try:
if is_enum_exist(enum_classifier_name):
# Получаем идентификатор удаляемого класса перечислений
cursor.execute("SELECT id FROM enum_classifier WHERE enum_classifier_name = ?", (enum_classifier_name,))
delete_id = cursor.fetchone()[0]
# Перемещаем все классы перечисления удаляемого класса перечисления в класс-перечисление "неопределенные"
cursor.execute("UPDATE enum_classifier SET id_parent = (SELECT id FROM enum_classifier WHERE enum_classifier_name = 'неопределенные') WHERE id_parent = ?", (delete_id,))
# Перемещаем все перечисления удаляемой категории в категорию "неопределенные"
cursor.execute("UPDATE enum SET enum_id = (SELECT id FROM enum_classifier WHERE enum_classifier_name = 'неопределенные') WHERE enum_id = ?", (delete_id,))
# Удаляем класс-перечисление
cursor.execute("DELETE FROM enum_classifier WHERE id = ?", (delete_id,))
conn.commit()
print('Класс перечисления успешно удален.')
else:
print('Указанный класс перечисления не существует.')
except Exception as _ex:
print(f"Произошла ошибка при удалении класса перечисления: {_ex}")
2.2.7. Удаление перечисления
функция: delete_enum_pos() - удаление перечисления
-- вход:
-- 1. enum_name - имя перечисления
-- выход: нет
-- эффекты:
-- 1. удаление перечисления
-- требования:
-- 1. перечисление должно существовать
def delete_enum_pos(enum_name):
try:
# Удаление перечисления
cursor.execute("DELETE FROM enum WHERE enum_name = ?", (enum_name,))
rows_deleted = cursor.rowcount
if rows_deleted > 0:
print('Перечисление успешно удалено.')
else:
print('Перечисление с указанным названием не найдено.')
conn.commit()
except Exception as _ex:
print(f"Произошла ошибка при удалении перечисления: {_ex}")
2.2.8. Изменение перечисления
функция: change_enum_pos() - изменение перечисления
-- вход:
-- 1. id - (NOT NULL) - id перечисления
-- 2. new_enum_name - (NOT NULL) - новое название перечисления
-- 3. new_enum_short_name - (NOT NULL) - новое короткое название перечисления
-- 4. new_enum_description - описание перечисления
-- 5. new_real_value - вещественное значение
-- 6. new_int_value - целочисленное значение
-- 7. new_pic_value - значение ссылки фотографии
-- 8. new_id_unit - id единицы измерения
-- выход: нет
-- эффекты:
-- 1. изменение перечисления
-- требования:
-- 1. перечисление должно существовать
-- 2. если задано new_id_unit, то эта единица измерения должна существовать
def change_enum_pos(id, new_enum_name, new_enum_short_name, new_enum_description=None, new_real_value=None, new_int_value=None, new_pic_value=None, new_id_unit=None):
try:
cursor.execute("SELECT enum_name FROM enum WHERE id = ?", (id,))
old_name_to_check = cursor.fetchone()[0]
if is_enum_pos_exist(old_name_to_check):
if new_id_unit:
# должна существовать ЕИ
cursor.execute("SELECT unit_name_short FROM unit WHERE id = ?", (new_id_unit,))
old_unit_name_to_check = cursor.fetchone()
print(f'old_unit_name_to_check[0] - {old_unit_name_to_check[0]}')
if not is_unit_exist(old_unit_name_to_check[0]):
print('Указанного id единицы измерения не существует.')
return
# cursor.execute("UPDATE enum SET priority = ? WHERE enum_name = ?", (priority, enum_name))
cursor.execute("UPDATE enum SET enum_name = ?, enum_short_name = ?, enum_description = ?, real_value = ?, int_value = ?, pic_value = ?, id_unit = ? WHERE id = ?",
(new_enum_name, new_enum_short_name, new_enum_description, new_real_value, new_int_value, new_pic_value, new_id_unit, id))
conn.commit()
else:
print('Указаное перечисление не найдено.')
return
except Exception as _ex:
print(f"Произошла ошибка при изменении перечисления: {_ex}")