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