
- •Задание на работу
- •Аннотация
- •Описание выполненной работы
- •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.2. Добавление единицы измерения
функция: add_unit() - добавление единицы измерения
-- вход:
-- 1. unit_name - название
-- 2. unit_name_short - короткое название
-- выход: нет
-- эффекты:
-- 1. добавление единицы измерения
-- требования:
-- 1. единицы измерения еще не должно существовать
def add_unit(unit_name, unit_name_short):
try:
if not is_unit_exist(unit_name_short):
cursor.execute('''
INSERT INTO unit (unit_name, unit_name_short)
VALUES (?, ?)
''', (unit_name, unit_name_short))
conn.commit()
print('Единица измерения успешно добавлена.')
else:
print('Единица измерения с таким названием уже существует.')
except Exception as _ex:
print(f'Error {_ex} - произошла ошибка при добавлении единицы измерения')
2.2.3. Проверка класса перечисления на существование
функция: is_enum_exist() - проверка на существование класса перечисления
-- вход:
-- 1. название класса перечисления
-- выход:
-- 1. true, если существует, иначе - false
-- эффекты: нет
-- требования: нет
def is_enum_exist(enum_classifier_name):
try:
cursor.execute("SELECT id FROM enum_classifier WHERE enum_classifier_name = ?", (enum_classifier_name,))
check_if_exist = cursor.fetchone()
return check_if_exist
except Exception as _ex:
print(f"Произошла ошибка при проверке перечисления на существование: {_ex}")
2.2.4 Проверка перечисления на существование
функция: is_enum_pos_exist() - проверка на существование перечисления
-- вход:
-- 1. название перечисления
-- выход:
-- 1. true, если существует, иначе - false
-- эффекты: нет
-- требования: нет
def is_enum_pos_exist(enum_name):
try:
cursor.execute("SELECT id FROM enum WHERE enum_name = ?", (enum_name,))
check_if_exist = cursor.fetchone()
return check_if_exist
except Exception as _ex:
print(f"Произошла ошибка при проверке перечисления на существование: {_ex}")
2.2.5. Добавление перечисления
функция: add_enum_pos() - добавление перечисления
-- вход:
-- 1. enum_id - (NOT NULL) - id класса перечисления
-- 2. enum_name - (NOT NULL) - назваение перечисления
-- 3. enum_short_name - (NOT NULL) - короткое название перечисления
-- 4. enum_description - описание перечисления
-- 5. real_value - вещественное значение
-- 6. int_value - целочисленное значение
-- 7. pic_value - значение ссылки фотографии
-- 8. id_unit - id единицы измерения
-- 9. priority - приоритет вывода
-- выход: нет
-- эффекты:
-- 1. добавление нового перечисления
-- требования:
-- 1. перечисление еще не должно существовать
-- 2. заданный класс перечисления должен существовать
def add_enum_pos(enum_id, enum_name, enum_short_name, enum_description=None, real_value=None, int_value=None, pic_value=None, id_unit=None, priority=None):
try:
# Check if enum already exists in enum_classifier
if is_enum_pos_exist(enum_name):
print("Указанное перечисление уже существует.")
return
else:
id_unit = None
# Get next priority if not provided
if priority is None:
cursor.execute("SELECT COALESCE(MAX(priority), 0) + 1 FROM enum", ())
priority = cursor.fetchone()[0]
# UPDATE via id
cursor.execute("INSERT INTO enum (enum_id, enum_name, enum_short_name, enum_description, real_value, int_value, pic_value, id_unit, priority) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
(enum_id, enum_name, enum_short_name, enum_description, real_value, int_value, pic_value, id_unit, priority))
conn.commit()
print('Перечисление успешно добавлено.')
except Exception as _ex:
print(f"Произошла ошибка при добавлении перечисления: {_ex}")