mirror of
https://github.com/ada-dmitry/lab6.git
synced 2026-09-24 09:20:15 +00:00
push 0.5 & create 0.6(update)
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,45 @@
|
||||
# Таблица с категориями и действия с ними
|
||||
|
||||
from dbtable import *
|
||||
|
||||
class CathTable(DbTable):
|
||||
def table_name(self):
|
||||
return self.dbconn.prefix + "cath"
|
||||
|
||||
def columns(self):
|
||||
return {"id": ["serial", "PRIMARY KEY"],
|
||||
"cath_name": ["varchar(32)", "NOT NULL"]}
|
||||
|
||||
def table_constraints(self):
|
||||
return ['CONSTRAINT "Name" UNIQUE (cath_name)']
|
||||
|
||||
def delete(self, val):
|
||||
# sql = "DELETE FROM " + self.table_name()
|
||||
# sql += " WHERE cath_name"
|
||||
# sql += "=" + "'" + "".join(val) + "';"
|
||||
param_sql = "DELETE FROM cath WHERE cath_name = %s;"
|
||||
cur = self.dbconn.conn.cursor()
|
||||
value = "".join(val)
|
||||
cur.execute(param_sql, (value,))
|
||||
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 example_insert(self):
|
||||
self.insert_one(["Завтрак"])
|
||||
self.insert_one(["Обед"])
|
||||
self.insert_one(["Ужин"])
|
||||
return
|
||||
@@ -0,0 +1,99 @@
|
||||
# Таблица с блюдами и действия с ними
|
||||
|
||||
from dbtable import *
|
||||
|
||||
class DishTable(DbTable):
|
||||
def table_name(self):
|
||||
return self.dbconn.prefix + "dish"
|
||||
|
||||
def columns(self):
|
||||
return {"id": ["serial", "PRIMARY KEY"],
|
||||
"cath_id": ["integer", "REFERENCES cath(id) ON DELETE CASCADE", "NOT NULL"],
|
||||
"dish_name": ["varchar(32)", "NOT NULL"],
|
||||
"cook_time": ["interval"],
|
||||
"manual": ["text"]}
|
||||
|
||||
def table_constraints(self):
|
||||
return ['CONSTRAINT "Name Dish" UNIQUE (dish_name)']
|
||||
|
||||
|
||||
|
||||
def find_by_position(self, num):
|
||||
sql = "SELECT * FROM " + self.table_name()
|
||||
sql += " ORDER BY "
|
||||
sql += ", ".join(self.primary_key())
|
||||
sql += " LIMIT 1 OFFSET %(offset)s"
|
||||
cur = self.dbconn.conn.cursor()
|
||||
cur.execute(sql, {"offset": num - 1})
|
||||
return cur.fetchone()
|
||||
|
||||
def all_by_cath_id(self, cath_id):
|
||||
sql = "SELECT * FROM " + self.table_name()
|
||||
sql += " WHERE cath_id = " + str(cath_id)
|
||||
sql += " ORDER BY "
|
||||
sql += ", ".join(self.primary_key())
|
||||
cur = self.dbconn.conn.cursor()
|
||||
cur.execute(sql)
|
||||
return cur.fetchall()
|
||||
|
||||
def delete(self, val):
|
||||
sql = "DELETE FROM dish"
|
||||
sql += " WHERE dish_name"
|
||||
sql += "=" + "'" + val + "';"
|
||||
cur = self.dbconn.conn.cursor()
|
||||
cur.execute(sql)
|
||||
self.dbconn.conn.commit()
|
||||
|
||||
def check_by_name(self, value):
|
||||
sql = f"SELECT * FROM {self.table_name()} WHERE dish_name='{value}'"
|
||||
cur = self.dbconn.conn.cursor()
|
||||
cur.execute(sql)
|
||||
result = cur.fetchone()
|
||||
cur.close()
|
||||
if result:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def insert_dishone(self, cath_id):
|
||||
|
||||
ins_name = input('Введите название добавляемого блюда (1 - для отмены): ')
|
||||
|
||||
while (ins_name.strip() == '')or(len(ins_name.strip()) > 32)\
|
||||
or(DishTable().check_by_name(ins_name)):
|
||||
|
||||
if(ins_name.strip() == ''):
|
||||
ins_name = input("Пустая строка. Повторите ввод! Укажите название удаляемого блюда (0 - отмена): ")
|
||||
if ins_name == "0":
|
||||
return "1"
|
||||
|
||||
elif(len(ins_name.strip()) > 32):
|
||||
ins_name = input("Слишком длинная строка. Повторите ввод!\
|
||||
Укажите название удаляемого блюда (0 - отмена): ")
|
||||
if ins_name == "0":
|
||||
return "1"
|
||||
else:
|
||||
print('Такое блюдо уже существует')
|
||||
ins_name = input("Повторите ввод! Укажите название блюда (0 - отмена): ")
|
||||
if ins_name == "0":
|
||||
return "1"
|
||||
|
||||
ins_time = input(f'Процесс добавления блюда: {ins_name}\
|
||||
\nВведите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ')
|
||||
if ins_time == "0":
|
||||
return "1"
|
||||
ins_manual = input(f'Процесс добавления блюда: {ins_name}\
|
||||
\nВведите краткую инструкцию приготовления блюда (1 - для отмены): ')
|
||||
if ins_time == "0":
|
||||
return "1"
|
||||
|
||||
insert = [cath_id, ins_time, ins_name, ins_manual]
|
||||
DishTable().insert_one(insert)
|
||||
|
||||
|
||||
def example_insert(self):
|
||||
self.insert_one([1, "10 minutes", "Яичница", "Взбить яйца, нарезать помидоры, обжарить их вместе."])
|
||||
self.insert_one([1, "20 minutes", "Блины", "Замесить тесто, да пожарить. ©️ Никита Сергеич"])
|
||||
self.insert_one([2, "2 hours", "Хлэб", "Почти, как блины, но не совсем."])
|
||||
self.insert_one([3, "40 minutes", "Паста", "Почувствуй себя итальянцем"])
|
||||
return
|
||||
@@ -0,0 +1,23 @@
|
||||
# Таблица персоны и особые действия с ней
|
||||
|
||||
from dbtable import *
|
||||
|
||||
class PeopleTable(DbTable):
|
||||
def table_name(self):
|
||||
return self.dbconn.prefix + "people"
|
||||
|
||||
def columns(self):
|
||||
return {"id": ["serial", "PRIMARY KEY"],
|
||||
"last_name": ["varchar(32)", "NOT NULL"],
|
||||
"first_name": ["varchar(32)", "NOT NULL"],
|
||||
"second_name": ["varchar(32)"]}
|
||||
|
||||
def find_by_position(self, num):
|
||||
sql = "SELECT * FROM " + self.table_name()
|
||||
sql += " ORDER BY "
|
||||
sql += ", ".join(self.primary_key())
|
||||
sql += " LIMIT 1 OFFSET %(offset)s"
|
||||
cur = self.dbconn.conn.cursor()
|
||||
cur.execute(sql, {"offset": num - 1})
|
||||
return cur.fetchone()
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
# Таблица Телефоны и особые действия с ней.
|
||||
|
||||
from dbtable import *
|
||||
|
||||
class PhonesTable(DbTable):
|
||||
def table_name(self):
|
||||
return self.dbconn.prefix + "phones"
|
||||
|
||||
def columns(self):
|
||||
return {"person_id": ["integer", "REFERENCES people(id)"],
|
||||
"phone": ["varchar(12)", "NOT NULL"]}
|
||||
|
||||
def primary_key(self):
|
||||
return ['person_id', 'phone']
|
||||
|
||||
def table_constraints(self):
|
||||
return ["PRIMARY KEY(person_id, phone)"]
|
||||
|
||||
def all_by_person_id(self, pid):
|
||||
sql = "SELECT * FROM " + self.table_name()
|
||||
sql += " WHERE person_id = %s"
|
||||
sql += " ORDER BY "
|
||||
sql += ", ".join(self.primary_key())
|
||||
cur = self.dbconn.conn.cursor()
|
||||
cur.execute(sql, str(pid))
|
||||
return cur.fetchall()
|
||||
|
||||
Reference in New Issue
Block a user