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

2.2.9. Изменение приоритета вывода записей находящихся на одном уровне

функция: edit_enum_pos_priority() - изменение приоритета вывода записей находящихся на одном уровне

-- вход:

-- 1. enum_pos_id - id изменяемого перечисления

-- 2. new_priority - новый приоритет

-- выход: нет

-- эффекты:

-- 1. изменение приоритета вывода перечисления одного уровня

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

-- 1. перечисления должны существовать

def edit_enum_pos_priority(enum_pos_id, new_priority):

try:

# Получаем enum_id для указанного enum_pos_id

cursor.execute("SELECT enum_id FROM enum WHERE id = ?", (enum_pos_id,))

result = cursor.fetchone()

if result is None:

print('Указанное enum_pos_id не найдено.')

return None

enum_id = result[0]

# Проверяем, существует ли уже запись с таким priority для данного enum_id

cursor.execute("""

SELECT count(*)

FROM enum

WHERE priority = ?

AND enum_id = ?

""", (new_priority, enum_id))

count = cursor.fetchone()[0]

if count == 0:

# Обновляем priority

cursor.execute("""

UPDATE enum

SET priority = ?

WHERE id = ?

""", (new_priority, enum_pos_id))

else:

# Смещаем приоритеты и обновляем нужную запись

cursor.execute("""

UPDATE enum

SET priority = priority + 1

WHERE priority >= ?

AND enum_id = ?

""", (new_priority, enum_id))

cursor.execute("""

UPDATE enum

SET priority = ?

WHERE id = ?

""", (new_priority, enum_pos_id))

conn.commit()

return new_priority

except Exception as _ex:

print(f"Произошла ошибка при изменении приоритета перечисления: {_ex}")

2.2.10. Поиск списка перечислений заданного класса и его вывод

функция: find_enums() - поиск списка перечислений заданного класса

-- вход:

-- 1. enum_class_id - id класса перечисления

-- выход: список перечислений со всеми полями

-- эффекты: нет

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

-- 1. класс перечисления должен существовать

def find_enums(enum_class_id):

try:

cursor.execute("""

SELECT ep.id, ep.enum_name, ep.enum_short_name, ep.enum_id, ep.priority, ep.real_value, ep.int_value, ep.pic_value, ep.id_unit

FROM enum ep

WHERE ep.enum_id = ?

ORDER BY ep.priority ASC

""", (enum_class_id,))

results = cursor.fetchall()

for row in results:

print(row)

return results

except Exception as _ex:

print(f"Произошла ошибка при получении списка перечислений заданного класса: {_ex}")

2.2.11. Добавление класса перечисления

функция: add_enum_in_classifier() - добавление класса перечисления

-- вход:

-- 1. enum_classifier_name - имя класса

-- 2. enum_classifier_short_name - короткое имя класса

-- 3. enum_parent_name - (optional) родительское имя

-- выход: нет

-- эффекты:

-- 1. добавления класса перечисления

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

-- 1. если есть enum_parent_name, класс с этим именем должен существовать

def add_enum_in_classifier(enum_classifier_name, enum_classifier_short_name, enum_parent_name):

try:

cursor.execute("SELECT id FROM enum_classifier WHERE enum_classifier_name = ?", (enum_parent_name,))

id_parent_check = cursor.fetchone()

if id_parent_check is not None:

id_parent = id_parent_check[0]

cursor.execute('''

INSERT INTO enum_classifier (enum_classifier_name, enum_classifier_short_name, id_parent)

VALUES (?, ?, ?)

''', (enum_classifier_name, enum_classifier_short_name, id_parent))

conn.commit()

else:

cursor.execute('''

INSERT INTO enum_classifier (enum_classifier_name, enum_classifier_short_name, id_parent)

VALUES (?, ?, NULL)

''', (enum_classifier_name, enum_classifier_short_name))

conn.commit()

print('Перечисление успешно добавлено в основную базу.')

except Exception as _ex:

print(f'Error {_ex} - ошибка при добавлении enum_in_classifier.')

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