From 85684b21ebf5b9994a845313b03a318067c020e1 Mon Sep 17 00:00:00 2001 From: LoskutovPD <48155308+LoskutovPD@users.noreply.github.com> Date: Wed, 25 Mar 2020 18:02:32 +0300 Subject: [PATCH] Commit 1 add queries, repair db, change some tables, add one --- database/data_coach.csv | 10 +++---- database/data_comp.csv | 12 ++++---- database/data_fan.csv | 20 ++++++------- database/data_m_competition.csv | 10 +++---- database/data_m_prize.csv | 8 ++++++ database/data_m_training.csv | 13 +++++---- database/data_prize.csv | 10 +++---- database/data_sportsman.csv | 10 +++---- database/data_traning.csv | 11 +++---- database/db_name | Bin 0 -> 65536 bytes database/main.py | 49 +++++++++++++++++++------------- database/queries.py | 44 ++++++++++++++++++++++++++++ 12 files changed, 132 insertions(+), 65 deletions(-) create mode 100644 database/data_m_prize.csv create mode 100644 database/db_name create mode 100644 database/queries.py 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 0000000000000000000000000000000000000000..9acf5dbee80939378770e84045da56f8c8b0c922 GIT binary patch literal 65536 zcmeI*Pi!1l9S87vGjDc00>|VI}^=PN0MyAaRzeQ5=fBsHr$uv-ZSZ z;@ydM*CNS*;#0YBLh1pjNE~QSR73)aazX-$Af!sP6{0P)AW=}-LO@VJr3ZfR&F*++ z?NDE;#`rt(j%VKd=KcB1tgScmW_RiH=Ue@-aw+PzgMQ_NF<}T{e5O({jND6x!K=w6 zzQv0&Sv3riTE4>~=kd|^-z@M}avMhBHa$k=;`fS6g)imb%6}za9Dj0r!TY)QY4;{? z#smQfKmY;|fWUzkC@zYB-+PbPDz!SR;nntXzZ-N~owemgH)!dF)@qVCF~3+p-KbX{ zxNx?9u~JRa)4|os=Psl+RVyE=rn0KmxV*2O;`02F@|Lbd-F~kfbe2;Ens+L27~L&7 z{;4CG+~QiN%3MgQXYZ2Tj__0i^tK%>*gWL;_i>ri+bxJQ8CFU)VY|@X(00b}R%$xG zYHiDzbo}};vGuV*xhqloO4x7pTTy3uKDDe0Pp#8vqwl=muo9^V)%sLs+%m3-m~i~l zT$5wF)FfT$Og)PKs~+jS?of+NNbMr!{Ew8xBf18c_^e59{%p`GWJ?>3h|Azq)xPwu z)mm6|{8>Ih9i4SAIW6a-U}c@#pG4=gMeK}>3rW&r$~cp1ty6IPBYYMe>j%w^aQk%G zUK$_d-#C5de7#cL-oP1o*-G;}vQfXkzW8CUQpvpCh8w)v^}ORB<70MWP+sbwW)71# zT52lr9STlGs`F&K?9RC3mr7!5UYE^Bhkx8`Ih>+%Pwl50b0KJl)k>p&v7uMzH#VE8 z)#O-Y%iA(N$G?Y<;gT*eiAom6vV|wD`Rla3w5`$VZw$D-+R9j*`3H37`t;W` znay0M?IrX2)hl7Q6?Rs*gu(gh)gEyi|L9S%RUZ_R{7FllOx9?DNl;R3a)OK;m$N~C zyEJ_Uo!#sP>Q831!vD+8d$skPtsoBSjuMD@9U5wlcw6sO6~PN5-P^L6!dhA|3=*Z zf83zI&`WfaZqVcJNdr+R1Rwwb2tWV=5P$##AOHafK;YmC9I|bimg3`T*um_{S?=~f z`fyp=(=)<2snR}iYVP>l@#C{|_u7+|O^2m8p+irIlb?E0PMSJtPAARr&iVX=u*sKV zRwr@FRbTc0CH>N%H|ZArmKQKV00Izz00bZa0SG_<0uX=z1R!wt3wS&(pe*Fl`exJd zctk*1SYO~r96sssV1TkP8^LPJa)oru;(mUnZpz~pIrM9T{=-)QZqsY@2YQ)T^&|Vd zsmL!CqSjr0<@q(nFNJ9gBwP;y-Zc23>Ain>9!{DC(3-lAZagdJ` z+71B-KmY;|fB*y_009U<00I!WYXtV#|6e0@zdv(1fp7Znyquu=|7E(S?*IRT{!D+O z-_wiq96dunqaV|c===0tdV;=9-=uHQ*XdFEDu-f%00bZa0SG_<0uX=z1Rwwb2tZ)3 z0(M#5ikJ2j|1wQk;+yfNJjD0tB|porZ_-bwEtW-=>)ORQxDW^Db?~?j_TpeS4jxm% zP8^(zgKZtG?*2>Lii6EKSa5KB|Nkk2UZ-DikN>H?Rv&Q?fB*y_009U<00Izz00bZa z0SLTX0u#~}zVFI2-OWz4vL5z&Qx>Pp2q(*>|L>~%|9|5<|Ig7+=?C;3dW`S%<39hpbr6v+1Rwwb2tWV= z5P$##AOHaf93+9fYl~9J^%kS+3sJi;#vS&O>n^q0fm(IcMlsfCwI8ZKB#Sw8&`ToCyA4#J@AB|}{yqU73E=WK0q|^0&8+19|J&UE|0@p!zytvZKmY;|fB*y_009U< z00Izzz&;kxR|WWSfZ+fDlfPTgb>sg3E%p5Wn{=CQ?c)Zb>JWec1Rwwb2tWV=5P$## zAOHaf=#GEf{WrIV1L*tz4!vN|+w?Cz{{K~ag;y~_00Izz00bZa0SG_<0uX=z1R$^< c1X8#A^#cJ`JpNxl5Mc5Z09WwW0l4me0ZZ~?`~Uy| literal 0 HcmV?d00001 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