diff --git a/0.6_test/__pycache__/dbtable.cpython-311.pyc b/0.6_test/__pycache__/dbtable.cpython-311.pyc index 5344175..cce8853 100644 Binary files a/0.6_test/__pycache__/dbtable.cpython-311.pyc and b/0.6_test/__pycache__/dbtable.cpython-311.pyc differ diff --git a/0.6_test/__pycache__/texts.cpython-311.pyc b/0.6_test/__pycache__/texts.cpython-311.pyc index 74baffb..9ca988e 100644 Binary files a/0.6_test/__pycache__/texts.cpython-311.pyc and b/0.6_test/__pycache__/texts.cpython-311.pyc differ diff --git a/0.6_test/dbtable.py b/0.6_test/dbtable.py index 5dc138a..5a49260 100644 --- a/0.6_test/dbtable.py +++ b/0.6_test/dbtable.py @@ -54,7 +54,6 @@ class DbTable: for i in range(len(vals)): if type(vals[i]) == str: vals[i] = "'" + vals[i] + "'" - pass else: vals[i] = str(vals[i]) values = ", ".join(vals) @@ -89,8 +88,18 @@ class DbTable: sql += " ORDER BY " sql += ", ".join(self.primary_key()) cur = self.dbconn.conn.cursor() - cur.execute(sql) - return cur.fetchall() + try: + cur.execute(sql) + return cur.fetchall() + except psycopg2.errors.UndefinedTable: + self.dbconn.conn.rollback() + self.db_drop() + self.db_init() + self.db_insert_somethings() + finally: + cur.execute(sql) + return cur.fetchall() + def select_one(self, **kwargs): conditions = [] diff --git a/0.6_test/main.py b/0.6_test/main.py index a6aee03..be2e001 100644 --- a/0.6_test/main.py +++ b/0.6_test/main.py @@ -117,12 +117,12 @@ class Main: elif next_step == "5": next_step = self.show_dish_in_cath() - elif next_step == "8": - x = int(input(texts.text_choice_update)) - if(x==1): - self.cath_update() - elif(x==2): - self.dish_update() + elif next_step == "8": + x = int(input('Выберите номер категории для изменения (0 - для отмены): ')) + if(x==0): + pass + else: + CathTable().cath_update(self.cath_arr[x-1]) return "1" elif next_step != "0" and next_step != "9" and next_step != "3": @@ -150,12 +150,6 @@ class Main: return CathTable().insert_one(data) return - - def update_cath(self): - """Функция для обновления категории - """ - - def show_dish_in_cath(self): """Вывод всех блюд в выбранной пользователем категории @@ -182,17 +176,11 @@ class Main: print("№" + " "*(self.max_index + 1)+ "Название" + " "*(self.max_len_name - 4)\ +"Время приготовления Краткая инструкция\ \n-------------------------------------------------------------------------------------------") - # print('Катя хорошая и Дима тоже') for i in range(len(self.dish_arr)): txt = str(i+1) + " "*(2+self.max_index-len(str(i))) txt += self.dish_arr[i][0] + " "*(4+self.max_len_name - len(self.dish_arr[i][0])) txt += self.dish_arr[i][1] + " "*(5+19-len(self.dish_arr[i][1])) txt += self.dish_arr[i][2] - # txt += self.dish_arr[i][0] + - # print(f"""{str(i+1):<8}{self.dish_arr[i][0]:<18}\ - # {self.dish_arr[i][1]:<15}{self.dish_arr[i][2]}""") -# print(f"""{str(i+1)}{" "*(self.max_index+2)}\ -# {self.dish_arr[i][0]}{" "*(self.max_len_name+2)}{self.dish_arr[i][1]}{" "*19}{self.dish_arr[i][2]}""") print(txt) menu = texts.show_dish_in_cath_txt print(menu) diff --git a/0.6_test/tables/__pycache__/cath_table.cpython-311.pyc b/0.6_test/tables/__pycache__/cath_table.cpython-311.pyc index 273c17d..1cde3be 100644 Binary files a/0.6_test/tables/__pycache__/cath_table.cpython-311.pyc and b/0.6_test/tables/__pycache__/cath_table.cpython-311.pyc differ diff --git a/0.6_test/tables/cath_table.py b/0.6_test/tables/cath_table.py index 654b94a..6bb166b 100644 --- a/0.6_test/tables/cath_table.py +++ b/0.6_test/tables/cath_table.py @@ -21,19 +21,51 @@ class CathTable(DbTable): self.dbconn.conn.commit() def find_by_name(self, name): - cur = self.dbconn.conn.cursor() + param_query = "SELECT id FROM cath WHERE cath_name = %s;" # sql_sel = "SELECT id FROM " + self.table_name() # sql_sel += " WHERE cath_name = " + "'" + name + "'" + ";" cur.execute(param_query, (name,)) ret = cur.fetchone() return list(ret)[0] - # sql = "SELECT * FROM " + self.table_name() - # sql += " ORDER BY " - # sql += ", ".join(self.primary_key()) - # sql += " LIMIT 1 OFFSET %(offset)s" - # cur.execute(sql, {"offset": num - 1}) - # print(cur) + + def cath_update(self, old): + """Функция для обновления категории + """ + print(old) + cur = self.dbconn.conn.cursor() + + data = input("Введите название (1 - отмена): ").strip() + if data == "1": + return + while((len(data.strip()) == 0)or(len(data.strip()) > 32)or(self.check_by_name(data.strip()))): + if (len(data.strip()) > 32): + data = input("Название слишком длинное! Введите название заново (1 - отмена):").strip() + if data == "1": + return + elif len(data.strip()) == 0: + data = input("Название не может быть пустым! Введите название заново (1 - отмена):").strip() + if data == "1": + return + else: + data = input("Такое название уже существует. Введите новое (1 - отмена):").strip() + + print(data) + param_sql = f"UPDATE cath SET cath_name = '{data}' WHERE cath_name = '{old}';" + cur.execute(param_sql) + self.dbconn.conn.commit() + + def check_by_name(self, value): + sql = f"SELECT * FROM {self.table_name()} WHERE cath_name='{value}'" + cur = self.dbconn.conn.cursor() + cur.execute(sql) + result = cur.fetchone() + cur.close() + if result: + return True + else: + return False + def example_insert(self): self.insert_one(["Завтрак"]) diff --git a/0.6_test/texts.py b/0.6_test/texts.py index 71e8cc3..bb3e027 100644 --- a/0.6_test/texts.py +++ b/0.6_test/texts.py @@ -10,7 +10,7 @@ show_cath_2txt = """------------------------------------------------------------ 3 - добавление новой категории; 4 - удаление категории; 5 - просмотр блюд в категории; - 8 - обновить категорию/блюдо; + 8 - обновить категорию; 9 - выход.""" show_dish_in_cath_txt = """-------------------------------------------------------------------------------------------\nДальнейшие операции: