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

2.2.2. Функция редактирования параметра

функция: edit_param - редактирование параметра

-- вход:

-- 1. param_id - id параметра

-- 2. new_name - новое имя

-- 3. new_short_name - новое короткое имя

-- 4. new_unit_id - другая единица измерения

-- 5. new_min_val - новая нижняя граница параметра

-- 6. new_max_val - новая верхняя граница параметра

-- выход: нет

-- эффекты:

-- 1. изменение записи в таблице param

-- требования:

-- 1. параметр должен существовать

-- 2. единица измерения должна существовать

def edit_param(param_id, new_name, new_short_name, new_unit_id, new_min_val, new_max_val):

try:

# Начало транзакции

conn.execute('BEGIN TRANSACTION')

cursor.execute('''SELECT param_name FROM param WHERE id = ? ''', (param_id,))

is_param_exist = cursor.fetchone()

if not is_param_exist:

print(f'Ошибка в edit_param: Параметра с id = {param_id} не существует.')

return 0

cursor.execute('''SELECT unit_name FROM unit WHERE id = ? ''', (new_unit_id,))

is_unit_exist = cursor.fetchone()

if not is_unit_exist:

print(f'Ошибка в edit_param: Единицы измерения с id = {new_unit_id} не существует.')

return 0

# Выполнение запроса на обновление

cursor.execute('''

UPDATE param

SET param_name = ?, param_short_name = ?, unit_id = ?, min_val = ?, max_val = ?

WHERE id = ?

''', (new_name, new_short_name, new_unit_id, new_min_val, new_max_val, param_id))

conn.commit()

# Получение количества обновленных строк

res = cursor.rowcount

# Фиксация изменений

conn.commit()

# Возвращение результата

if res == 1:

print(f'Параметр с id = {param_id} успешно обновлен.')

return 1

else:

return 0

except sqlite3.Error as e:

print(f"Ошибка в edit_param: {e}")

conn.rollback()

return 0

2.2.3. Функция удаления параметра

функция: delete_param - удаление параметра

-- вход:

-- 1. param_to_delete - имя параметра для удаления

-- выход: нет

-- эффекты:

-- 1. удаление параметра

-- требования:

-- 1. параметр должен существовать

def delete_param(param_to_delete):

cursor.execute('''SELECT id FROM param WHERE param_name = ? ''', (param_to_delete,))

param_id = cursor.fetchone()

if not param_id:

print(f'Ошибка. Параметра с таким названием не существует')

return 0

else:

param_id = param_id[0]

print(f'param_id - {param_id}')

def del_param_from__class_param():

cursor.execute('''SELECT id FROM class_param WHERE param_id = ? ''', (param_id,))

classes_id_to_del = cursor.fetchall()

print(f'classes_id_to_del - {classes_id_to_del}')

for elem_id in classes_id_to_del:

print(f'elem_id - {elem_id[0]}')

cursor.execute("DELETE FROM class_param WHERE id = ?", (elem_id[0],))

conn.commit()

print(f'Классы параметров (если были) удаляемого параметра были обновлены')

del_param_from__class_param()

cursor.execute("DELETE FROM param WHERE param_name = ?", (param_to_delete,))

res = cursor.rowcount

conn.commit()

# Возвращение результата в зависимости от количества удаленных строк

if res == 1:

print(f'Параметр успешно удален.')

return 1

else:

print(f'При удалении параметра что-то пошло не так.')

return 0

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