Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6 сем / 2 / МиСПрИС_1374_2_Наволоцкий_Харитонов_Зырянов.docx
Скачиваний:
9
Добавлен:
29.03.2025
Размер:
1.07 Mб
Скачать

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}")

Соседние файлы в папке 2