diff --git a/database/data_coach.csv b/database/data_coach.csv index 8c2c54a..4e132d9 100644 --- a/database/data_coach.csv +++ b/database/data_coach.csv @@ -1,5 +1,5 @@ -Coach_Id,Name,Experience -1,df,20 -2,vb,3 -3,ui,56 -4,qw,7 +id,Name,Experience +1,Gani,20 +2,Tadi,3 +3,Uper,56 +4,Shub,7 diff --git a/database/data_comp.csv b/database/data_comp.csv index 4411168..38543b7 100644 --- a/database/data_comp.csv +++ b/database/data_comp.csv @@ -1,6 +1,6 @@ -Competition_Id,Name,Date,Duration -1,ew,12.03.2020,23 -2,op,04.02.2020,12 -3,as,03.01.2020,4 -4,bn,27.01.2020,5 -5,we,23.03.2020,89 +id,Name,Date,Duration +1,Comp1,20200312,23 +2,Comp12,20200204,12 +3,Comp13,20200103,4 +4Comp69,20200127,5 +5,Comp141,20200327,89 diff --git a/database/data_fan.csv b/database/data_fan.csv index b429340..6f556c2 100644 --- a/database/data_fan.csv +++ b/database/data_fan.csv @@ -1,10 +1,10 @@ -Fan_Id,Name,Club,Sportsman_Id -2,Bob,Mom,3 -3,Mary,MNB,4 -4,Tom,Mom,1 -5,Max,TRY,2 -6,Jim,Mom,3 -7,Lola,Mom,3 -8,Tim,WEW,4 -9,Sima,Mom,1 -10,Roz,Mom,1 +id,Name,Club,Sportsman_id +2,Bob,Mom,3 +3,Mary,MNB,4 +4,Tom,Mom,1 +5,Max,TRY,2 +6,Jim,Mom,3 +7,Lola,Mom,3 +8,Tim,WEW,4 +9,Sima,Mom,1 +10,Roz,Mom,1 diff --git a/database/data_m_competition.csv b/database/data_m_competition.csv index 58ef4b5..81fa9d4 100644 --- a/database/data_m_competition.csv +++ b/database/data_m_competition.csv @@ -1,5 +1,5 @@ -id_sportsman,id_competition -1,3 -2,3 -3,2 -4,3 +Sportsman_id,Competition_id +1,3 +2,3 +3,2 +4,3 diff --git a/database/data_m_prize.csv b/database/data_m_prize.csv new file mode 100644 index 0000000..7c226a9 --- /dev/null +++ b/database/data_m_prize.csv @@ -0,0 +1,8 @@ +Sportsman_id,Prize_id +1,1 +2,3 +3,3 +4,1 +1,2 +2,2 +3,4 diff --git a/database/data_m_training.csv b/database/data_m_training.csv index dd42856..4893463 100644 --- a/database/data_m_training.csv +++ b/database/data_m_training.csv @@ -1,5 +1,8 @@ -id_sportsman,id_traning -1,5 -2,3 -3,3 -4,1 +Sportsman_id,Training_id +1,5 +2,3 +3,3 +4,1 +1,6 +2,6 +3,6 diff --git a/database/data_prize.csv b/database/data_prize.csv index 695b1bd..cbc34df 100644 --- a/database/data_prize.csv +++ b/database/data_prize.csv @@ -1,5 +1,5 @@ -Prize_Id,Name,Title -1,df,er -2,as,er -3,qw,yu -4,gh,yu +id,Name,Title +1,dick&butter,champ +2,cake,looser +3,sweet,like_a_dog +4,bone,goodboy diff --git a/database/data_sportsman.csv b/database/data_sportsman.csv index e65b33b..0c4e3c6 100644 --- a/database/data_sportsman.csv +++ b/database/data_sportsman.csv @@ -1,5 +1,5 @@ -Sportsman_Id,Name,Sport_Name,Coach_Id -1,cv,df,4 -2,bn,df,3 -3,qw,gh,3 -4,zx,ui,1 +id,Name,Sport_Name,Coach_id +1,Jesha,football,4 +2,Izya,football,3 +3,Jakob,rustling,3 +4,Bruno,chess,1 diff --git a/database/data_traning.csv b/database/data_traning.csv index 11f6ac9..ae4d64e 100644 --- a/database/data_traning.csv +++ b/database/data_traning.csv @@ -1,5 +1,6 @@ -Training_Id,Target,Date -2,yt,12.12.2019 -3,er,14.02.2020 -4,sd,25.02.2020 -5,vb,24.12.2010 +id,Target,Date +2,faster,20191212 +3,stronger,20200214 +4,better,20200225 +5,nothing,20101224 +6,stronger,20200215 diff --git a/database/db_name b/database/db_name new file mode 100644 index 0000000..9acf5db Binary files /dev/null and b/database/db_name differ diff --git a/database/main.py b/database/main.py index 92dfed1..4c5d06b 100644 --- a/database/main.py +++ b/database/main.py @@ -2,10 +2,10 @@ import pandas import sqlite3 -DATABASE = 'base.db' - -database = sqlite3.connect(DATABASE) +database = SqliteDatabase( + 'db_name' +) class BaseModel(Model): class Meta: @@ -13,52 +13,50 @@ class Meta: class Training(BaseModel): - Training_Id = IntegerField(primary_key=True) Target = CharField() - Date = DateTimeField() + Date = IntegerField() class Competition(BaseModel): - Competition_Id = IntegerField(primary_key=True) Name = CharField() - Date = DateTimeField() + Date = IntegerField() Duration = IntegerField() class Coach(BaseModel): - Coach_Id = IntegerField(primary_key=True) Name = CharField() Experience = IntegerField() class Prize(BaseModel): - Prize_Id = IntegerField(primary_key=True) Name = CharField() Title = CharField() class Sportsman(BaseModel): - Sportsman_Id = IntegerField(primary_key=True) Name = CharField() Sport_Name = CharField() - Coach_Id = ForeignKeyField(Coach) + Coach_id = ForeignKeyField(Coach) class Fan(BaseModel): - Fan_Id = IntegerField(primary_key=True) Name = CharField() Club = CharField() - Sportsman_Id = ForeignKeyField(Sportsman) + Sportsman_id = ForeignKeyField(Sportsman) class M_Competition(BaseModel): - id_sportsman = ForeignKeyField(Sportsman) - id_competition = ForeignKeyField(Competition) + Sportsman_id = ForeignKeyField(Sportsman) + Competition_id = ForeignKeyField(Competition) -class M_Traning(BaseModel): - id_sportsman = ForeignKeyField(Sportsman) - id_traning = ForeignKeyField(Training) +class M_Training(BaseModel): + Sportsman_id = ForeignKeyField(Sportsman) + Training_id = ForeignKeyField(Training) + +class M_Prize(BaseModel): + Sportsman_id = ForeignKeyField(Sportsman) + Prize_id = ForeignKeyField(Prize) csv_path_fan = 'data_fan.csv' @@ -69,11 +67,24 @@ class M_Traning(BaseModel): csv_path_prize = 'data_prize.csv' csv_path_sportsman = 'data_sportsman.csv' csv_path_traning = 'data_traning.csv' +csv_path_m_prize = 'data_m_prize.csv' pandas.read_csv(csv_path_traning).to_sql("Training", database, if_exists='append', index=False) pandas.read_csv(csv_path_comp).to_sql("Competition", database, if_exists='append', index=False) pandas.read_csv(csv_path_coach).to_sql("Coach", database, if_exists='append', index=False) pandas.read_csv(csv_path_prize).to_sql("Prize", database, if_exists='append', index=False) +pandas.read_csv(csv_path_m_prize).to_sql("M_Prize", database, if_exists='append', index=False) pandas.read_csv(csv_path_sportsman).to_sql("Sportsman", database, if_exists='append', index=False) pandas.read_csv(csv_path_fan).to_sql("Fan", database, if_exists='append', index=False) pandas.read_csv(csv_path_m_competition).to_sql("M_Competition", database, if_exists='append', index=False) -pandas.read_csv(csv_path_m_training).to_sql("M_Traning", database, if_exists='append', index=False) \ No newline at end of file +pandas.read_csv(csv_path_m_training).to_sql("M_Training", database, if_exists='append', index=False) + +MODELS = [Coach, + Competition, + Fan, + M_Competition, + M_Training, + Prize, + Sportsman, + Training] + +database.create_tables(MODELS) \ No newline at end of file diff --git a/database/queries.py b/database/queries.py new file mode 100644 index 0000000..a832a32 --- /dev/null +++ b/database/queries.py @@ -0,0 +1,44 @@ +def query_1(sportX): + ans = [] + query = (Sportsman.select(Coach.Name).join(Coach).filter(Sportsman.Sport_Name == sportX).group_by('Coach.Name')) + for x in database.execute(query): + ans.append(list(x)) + return ans + +def query_2(substrX): + ans = [] + query = (Training + .select(Training.Target, + Training.Date, + Sportsman.Name, + Competition.Name) + .join(M_Training) + .join(Sportsman) + .join(M_Competition) + .join(Competition) + .where(Competition.Name ** f'%{substrX}%') + .order_by(Training.Date.desc())) + for x in database.execute(query): + ans.append(list(x)) + return ans + +def query_3(duratX, titleY): + ans = [] + query = (Fan + .select(Fan.Club, + Sportsman.Name, + Competition.Date, + Competition.Name) + .join(Sportsman) + .join(M_Competition) + .join(Competition) + .switch(Sportsman) + .join(M_Prize) + .join(Prize) + .where(Competition.Duration > duratX, + Prize.Title == titleY) + .group_by(Fan.Club) + ) + for x in database.execute(query): + ans.append(list(x)) + return ans \ No newline at end of file