diff --git a/FlaskWebProject/FlaskWebProject/lewy_db.py b/FlaskWebProject/FlaskWebProject/lewy_db.py index 1e3d088..d15afc6 100644 --- a/FlaskWebProject/FlaskWebProject/lewy_db.py +++ b/FlaskWebProject/FlaskWebProject/lewy_db.py @@ -10,6 +10,18 @@ import traceback global db +class c: + HEADER = '\033[95m' + OKBLUE = '\033[94m' + OKCYAN = '\033[96m' + OKGREEN = '\033[92m' + WARNING = '\033[93m' + FAIL = '\033[91m' + ENDC = '\033[0m' + BOLD = '\033[1m' + UNDERLINE = '\033[4m' + ENDL = '\n' + class baza(): # global sportowcy, trofea, sportowcy_w_meczach, statystyki_sportowcow, kluby, mecze @@ -24,12 +36,8 @@ class baza(): self.db = self.initDB(self.app, config) self.refresh_session() - def increment_stat(self, table: str, where: dict, column: str, value: int): - with self.Session() as session: - model = self.models[table] - session.query(model).filter_by(**where).update({column: getattr(model, column) + value}) - session.commit() - + def __repr__(self): + return f"" def initDB(self, app, config): global sportowcy, trofea, sportowcy_w_meczach, statystyki_sportowcow, kluby, mecze @@ -114,6 +122,8 @@ class baza(): zoltych_kartek_sum: Mapped[ int] = mapped_column() czerwonych_kartek_sum: Mapped[ int] = mapped_column() wygranych_sum: Mapped[ int] = mapped_column() + przegranych_sum: Mapped[ int] = mapped_column() + remisow_sum: Mapped[ int] = mapped_column() wynik_sum: Mapped[ int] = mapped_column() meczow_do_wynikow_sum: Mapped[ int] = mapped_column() @@ -150,6 +160,23 @@ class baza(): def __repr__(self): return f"" + def jsonify(self): + return { + "id_meczu": self.id_meczu, + "zewnetrzne_id_meczu": self.zewnetrzne_id_meczu, + "data": self.data.strftime("%Y-%m-%d"), + "gospodarze_id": self.gospodarze_id, + "gospodarze": self.gospodarze.skrocona_nazwa, + "goscie_id": self.goscie_id, + "goscie": self.goscie.skrocona_nazwa, + "gosp_wynik": self.gosp_wynik, + "gosc_wynik": self.gosc_wynik, + "sezon": self.sezon, + "nazwa_turnieju": self.nazwa_turnieju, + "skrocona_nazwa_turnieju": self.skrocona_nazwa_turnieju, + "flaga": self.flaga + } + self.entities = { 'sportowcy': sportowcy, 'trofea': trofea, @@ -175,9 +202,9 @@ class baza(): try: return_val = func(self, *args, **kwargs) except: - print( "\033[91m" + print(f"{c.FAIL}" f"Wystąpił błąd podczas wykonywania zapytania SQL:" - "\033[0m" + f"{c.ENDC}" "\n" f"{traceback.format_exc()}") self.session.rollback() @@ -196,8 +223,10 @@ class baza(): :param string: Zapis tekstowy :type string: str """ - table_str = string[:string.find('.')] - column_str = string[string.find('.') + 1:] + try: + table_str, column_str = string.split('.') + except: + raise ValueError("Nieprawidłowe dane - podaj zarówno tabelę, jak i kolumnę, np.: \"kluby.id_klubu\".") if hasattr(self.entities[table_str], column_str): return getattr(self.entities[table_str], column_str) return None @@ -217,27 +246,60 @@ class baza(): if not isinstance(entity_type, str): entity_type = entity_type.__name__ + query_params, special_args = self.extract_special_args(kwargs) + + print(f"[{round(time.time())}] SELECT {entity_type}") + + results = ( + self.session. + query(self.entities[entity_type]). + filter_by(**query_params) + ) + + # Obsługuje "ORDER_BY", "LIMIT", itp. itd. + results = self.manipulate_results(results, special_args) + + results_objs = results.all() + print(f"[{round(time.time())}] SELECT RESULTS: {results_objs}") + + return results_objs + + def extract_special_args(self, dictionary: dict): + """ + Zwraca krotkę składającą się ze słowników z: + - parametrami wyszukiwania + - specjalnymi argumentami + + :param dictionary: Słownik wejściowy + :type dictionary: dict + """ + # Save special arguments received with kwargs, # that are meant for SQL operations to special_args, # and delete from the rest, that will be passed # directly to filter_by(). # They will not be passed as search query, but serve # as an additional search parameter. + dictionary = dictionary.copy() + special_keywords = ("ORDER_BY", "ORDER_BY_DESC", "LIMIT") special_args = {} for arg in special_keywords: - if arg in kwargs: - special_args[arg] = kwargs[arg] - del kwargs[arg] + if arg in dictionary: + special_args[arg] = dictionary[arg] + del dictionary[arg] - print(f"[{round(time.time())}] SELECT") + return dictionary, special_args - results = ( - self.session. - query(self.entities[entity_type]). - filter_by(**kwargs) - ) + def manipulate_results(self, results, special_args: dict): + """ + Wykonuje specjalne operacje na rezultatach wyszukiwania. + + :param results: Wyniki wyszukiwania (ORM) + :param special_args: Specjalne operacje + :type special_args: dict + """ if "ORDER_BY" in special_args: column = self.str_to_column(special_args["ORDER_BY"]) @@ -252,10 +314,7 @@ class baza(): if "LIMIT" in special_args: results = results.limit(special_args["LIMIT"]) - results_objs = results.all() - print(f"[{round(time.time())}] SELECT RESULTS: {results_objs}") - - return results_objs + return results @exit_gracefully def simple_insert_one(self, entity_type, **kwargs): @@ -270,7 +329,15 @@ class baza(): if not isinstance(entity_type, str): entity_type = entity_type.__name__ - print(f"[{round(time.time())}] INSERT") + if "id" in kwargs: + print(f"{c.FAIL}UWAGA!{c.ENDC}") + print(f"Próbujesz dodać obiekt do tabeli, który ma już identyfikator.\n" + f"To spowoduje problemy w przyszłości, gdy będziesz chciał dodać nowy obiekt do bazy bez ustawiania id na sztywno\n" + f"(id klucza głównego nie zostanie zaktualizowane w sekwencji, przez co baza będzie próbowała dodać obiekt z id już istniejącego rekordu!).\n" + f"Aby naprawić dodawanie z autoinkrementującym kluczem zobacz {c.WARNING}https://stackoverflow.com/a/8745101{c.ENDC}\n" + f"Zostałeś ostrzeżony!") + + print(f"[{round(time.time())}] INSERT {entity_type}") obj = self.entities[entity_type](**kwargs) #with Session(self.db.engine) as session: @@ -294,6 +361,131 @@ class baza(): return 0 #return 1 + @exit_gracefully + def increment_fields(self, entity_type, record_id, **increments): + """ + Dodaje wartości do istniejących pól (np. goli_sum += 2). + + Użycie: + increment_fields(ldb.statystyki_sportowcow, 123, goli_sum=2, asyst_sum=1) + """ + + if not isinstance(entity_type, str): + entity_type = entity_type.__name__ + + if entity_type not in self.entities: + print(f"Nieznany typ encji: {entity_type}") + return -1 + + model_class = self.entities[entity_type] + + print(f"[{round(time.time())}] INCREMENT {entity_type}") + + record = self.session.get(model_class, record_id) + if not record: + print(f"Rekord z ID {record_id} nie istnieje w tabeli {entity_type}") + return -1 + + for key, increment_value in increments.items(): + if hasattr(record, key): + current_value = getattr(record, key, 0) + setattr(record, key, current_value + increment_value) + else: + print(f"⚠️ Pole '{key}' nie istnieje w modelu '{entity_type}' - pomijam.") + + self.session.commit() + return 0 + + @exit_gracefully + def get_id_meczu_by_zewnetrzne_id(self, external_id: str) -> int | None: + """ + Zwraca id_meczu na podstawie zewnetrzne_id_meczu. + + :param external_id: zewnętrzne ID meczu + :return: id_meczu lub None jeśli nie znaleziono + """ + stmt = select(mecze.id_meczu).where(mecze.zewnetrzne_id_meczu == external_id) + result = self.session.execute(stmt).scalar_one_or_none() + return result + + @exit_gracefully + def get_id_zawodnika_by_zewnetrzne_id(self, external_id: str) -> int | None: + """ + Zwraca id_zawodnika na podstawie zewnetrzne_id_zawodnika. + + :param external_id: zewnętrzne ID meczu + :return: id_zawodnika lub None jeśli nie znaleziono + """ + stmt = select(sportowcy.id_zawodnika).where(sportowcy.zewnetrzne_id_zawodnika == external_id) + result = self.session.execute(stmt).scalar_one_or_none() + return result + + @exit_gracefully + def simple_update_one(self, entity_type, record_id, **kwargs): + """ + Użycie: + simple_update_one(ldb.kluby, "polska", pelna_nazwa="Nowa Nazwa", skrocona_nazwa="NN") + + Aktualizuje pojedynczy rekord w bazie danych na podstawie ID. + """ + if not isinstance(entity_type, str): + entity_type = entity_type.__name__ + + if entity_type not in self.entities: + print(f"Nieznany typ encji: {entity_type}") + return -1 + + model_class = self.entities[entity_type] + + print(f"[{round(time.time())}] UPDATE {entity_type}") + + record = self.session.get(model_class, record_id) + if not record: + print(f"Rekord z ID {record_id} nie istnieje w tabeli {entity_type}") + return -1 + + for key, value in kwargs.items(): + if hasattr(record, key): + setattr(record, key, value) + else: + print(f"⚠️ Pole '{key}' nie istnieje w modelu '{entity_type}' - pomijam.") + + self.session.commit() + return 0 + + @exit_gracefully + def dodaj_sportowca_w_meczu(self, entity_type, record_id, **kwargs): + """ + Użycie: + dodaj_sportowca_w_meczu(ldb.sportowcy_w_meczu, ...) + + Dodaje pojedynczy rekord w bazie danych. + """ + if not isinstance(entity_type, str): + entity_type = entity_type.__name__ + + if entity_type not in self.entities: + print(f"Nieznany typ encji: {entity_type}") + return -1 + + model_class = self.entities[entity_type] + + print(f"[{round(time.time())}] INSERT {entity_type}") + + record = self.session.get(model_class, record_id) + if not record: + print(f"Rekord z ID {record_id} nie istnieje w tabeli {entity_type}") + return -1 + + for key, value in kwargs.items(): + if hasattr(record, key): + setattr(record, key, value) + else: + print(f"⚠️ Pole '{key}' nie istnieje w modelu '{entity_type}' - pomijam.") + + self.session.commit() + return 0 + @exit_gracefully def sample_data_init(self, override_safety_check=False): """ @@ -327,41 +519,48 @@ class baza(): goscie_id="undefined", gosp_wynik=0, gosc_wynik=0, - sezon="1970/1970", + sezon="1970-1970", nazwa_turnieju="Nieznany turniej", skrocona_nazwa_turnieju="N/A", flaga=0) - self.simple_insert_one(statystyki_sportowcow, - ostatni_mecz=1, - ilosc_wystapien=0, - minut_gry=0, - gier_sum=0, - goli_sum=0, - asyst_sum=0, - interwencji_sum=0, - nieobronionych_interwencji_sum=0, - zoltych_kartek_sum=0, - czerwonych_kartek_sum=0, - wygranych_sum=0, - wynik_sum=0, - meczow_do_wynikow_sum=0) + + #Robercik + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=487, + minut_gry=0, # Brak danych + gier_sum=487, + goli_sum=381, + asyst_sum=44, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=2, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych +) sportowiec = sportowcy( - zewnetrzne_id_zawodnika="MVC8zHZD", - imie="Robert", - nazwisko="Lewandowski", - data_urodzenia="21.08.1988", - czy_aktywny=True, - klub_id="undefined", - narodowosc="PL", - ilosc_trofeow=0, - pierwszy_mecz_id=1, - ostatni_gol_dla_id="undefined", - statystyki_id=1, - wycena=64_940_000) + zewnetrzne_id_zawodnika="MVC8zHZD", + imie="Robert", + nazwisko="Lewandowski", + data_urodzenia="21.08.1988", + czy_aktywny=True, + klub_id="Barcelona", + narodowosc="PL", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=1, + wycena=67_000_000 # Wartość rynkowa: €15.3 mln +) + trofeum = trofea( nazwa="Nieznane trofeum", - sezon="0000/0000", + sezon="0000-0000", rok=1970) session.add(sportowiec) @@ -373,6 +572,496 @@ class baza(): trofeum.zawodnik = sportowiec sportowiec.ostatnie_trofeum = trofeum + # MIEJSCE NA DANE KOLEJNYCH SPORTOWCÓW + # TRZEBA ZROBIĆ TO RĘCZNIE, ZGODNIE ZE SCHEMATEM: + # self.simple_insert_one(statystyki_sportowcow, + # ostatni_mecz=1, + # ilosc_wystapien=0, + # minut_gry=0, + # gier_sum=0, + # goli_sum=0, + # asyst_sum=0, + # interwencji_sum=0, + # nieobronionych_interwencji_sum=0, + # zoltych_kartek_sum=0, + # czerwonych_kartek_sum=0, + # wygranych_sum=0, + # przegranych_sum=0, + # remisow_sum=0, + # wynik_sum=0, + # meczow_do_wynikow_sum=0) + + # self.simple_insert_one(sportowcy, + # zewnetrzne_id_zawodnika="...", + # imie="...", + # nazwisko="...", + # data_urodzenia="...", + # czy_aktywny=True, # NIE WSZYSCY SĄ AKTYWNI! + # klub_id="undefined", + # narodowosc="...", + # ilosc_trofeow=0, + # pierwszy_mecz_id=1, + # ostatni_gol_dla_id="undefined", + # statystyki_id=2, # itd... + # wycena=...) # w złotówkach + + #Ronaldo + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=702, + minut_gry=0, # Brak danych + gier_sum=702, + goli_sum=569, + asyst_sum=81, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=92, + czerwonych_kartek_sum=8, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych +) + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="WGOY4FSt", + imie="Cristiano", + nazwisko="Ronaldo", + data_urodzenia="05.02.1985", + czy_aktywny=True, + klub_id="Al Nassr Riyadh", + narodowosc="PT", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=2, + wycena=55_000_000 # Wartość rynkowa: €12.1 mln +) + #Messi + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=619, + minut_gry=0, # Brak danych o łącznym czasie gry + gier_sum=619, + goli_sum=528, + asyst_sum=53, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=0, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych +) + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="vgOOdZbd", + imie="Lionel", + nazwisko="Messi", + data_urodzenia="24.06.1987", + czy_aktywny=True, + klub_id="Inter Miami", + narodowosc="AR", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=3, + wycena=67_000_000 # Wartość rynkowa: €15.3 mln +) + #Mbappe + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=280, + minut_gry=0, # Brak danych o łącznym czasie gry + gier_sum=280, + goli_sum=222, + asyst_sum=67, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=38, + czerwonych_kartek_sum=2, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych +) + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="Wn6E2SED", + imie="Kylian", + nazwisko="Mbappé", + data_urodzenia="20.12.1998", + czy_aktywny=True, + klub_id="Real Madryt", + narodowosc="FR", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=4, + wycena=185_700_000 # Wartość rynkowa: €185.7 mln +) + #Zlatan + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=519, + minut_gry=0, # Brak danych o łącznym czasie gry + gier_sum=519, + goli_sum=355, + asyst_sum=63, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=87, + czerwonych_kartek_sum=9, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych +) + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="AiH2zDve", + imie="Zlatan", + nazwisko="Ibrahimović", + data_urodzenia="03.10.1981", + czy_aktywny=False, + klub_id="undefined", + narodowosc="SE", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=5, + wycena=0 # Zakończył karierę +) + #Suarez + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=608, + minut_gry=0, # Brak danych o łącznym czasie gry + gier_sum=608, + goli_sum=399, + asyst_sum=122, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=0, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych +) + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="dUShzrBp", + imie="Luis", + nazwisko="Suárez", + data_urodzenia="24.01.1987", + czy_aktywny=True, + klub_id="Inter Miami", + narodowosc="UY", + ilosc_trofeow=0, # Brak danych na Flashscore + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=6, + wycena=8_800_000 # Wartość rynkowa: €2.0 mln +) + #Haaland + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=235, + minut_gry=0, # Brak danych o łącznym czasie gry + gier_sum=235, + goli_sum=178, + asyst_sum=41, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=18, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych +) + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="UmV9iQmE", + imie="Erling", + nazwisko="Haaland", + data_urodzenia="21.07.2000", + czy_aktywny=True, + klub_id="Manchester City", + narodowosc="NO", + ilosc_trofeow=0, # Brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=7, + wycena=777_500_000 # ~€178.7 mln +) + #Karim Benzema + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=589, + minut_gry=0, # Brak danych + gier_sum=589, + goli_sum=305, + asyst_sum=0, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=14, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 +) + + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="tpV0VX0S", + imie="Karim", + nazwisko="Benzema", + data_urodzenia="19.12.1987", + czy_aktywny=True, + klub_id="Al Ittihad", + narodowosc="FR", + ilosc_trofeow=0, # Flashscore nie podaje + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=8, + wycena=31_950_000 # €7.1 mln +) + #Sergio Aguero + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=443, + minut_gry=0, # Brak danych o czasie gry + gier_sum=443, + goli_sum=254, + asyst_sum=38, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=47, + czerwonych_kartek_sum=2, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych +) + + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="vw8ZV7HC", + imie="Sergio", + nazwisko="Agüero", + data_urodzenia="02.06.1988", + czy_aktywny=False, + klub_id="retired", + narodowosc="AR", + ilosc_trofeow=0, # Brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=9, + wycena=0 # Zakończył karierę +) + #Edinson Cavani + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=507, + minut_gry=0, # Brak danych o czasie gry + gier_sum=507, + goli_sum=273, + asyst_sum=62, + interwencji_sum=0, + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=3, + czerwonych_kartek_sum=0, + wygranych_sum=0, # Brak danych + przegranych_sum=0, # Brak danych + remisow_sum=0, # Brak danych + wynik_sum=0, # Brak danych + meczow_do_wynikow_sum=0 # Brak danych +) + + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="Qgx2trzH", + imie="Edinson", + nazwisko="Cavani", + data_urodzenia="14.02.1987", + czy_aktywny=True, + klub_id="Boca Juniors", + narodowosc="UY", + ilosc_trofeow=0, + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=10, + wycena=4_212_000 # PLN +) + #Radamel Falcao + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=360, + minut_gry=0, # brak danych o czasie gry + gier_sum=360, + goli_sum=170, + asyst_sum=17, + interwencji_sum=54, + nieobronionych_interwencji_sum=1, + zoltych_kartek_sum=0, # brak danych + czerwonych_kartek_sum=0, + wygranych_sum=0, + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 +) + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="2oMimkAU", + imie="Radamel", + nazwisko="Falcao", + data_urodzenia="10.02.1986", + czy_aktywny=True, + klub_id="Millonarios", + narodowosc="CO", + ilosc_trofeow=0, # brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=11, + wycena=1_084_500 #PLN +) + #Wayne Rooney + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=568, + minut_gry=0, # brak danych o czasie gry + gier_sum=568, + goli_sum=234, + asyst_sum=47, + interwencji_sum=0, # brak danych + nieobronionych_interwencji_sum=0, # brak danych + zoltych_kartek_sum=105, + czerwonych_kartek_sum=4, + wygranych_sum=0, # brak danych + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 +) + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="WfXv1DCa", + imie="Wayne", + nazwisko="Rooney", + data_urodzenia="24.10.1985", + czy_aktywny=False, # zakończył karierę + klub_id="undefined", + narodowosc="ENG", + ilosc_trofeow=0, # brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=12, + wycena=0 # brak wyceny +) + #Robin van Persie + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=374, + minut_gry=0, # brak danych o czasie gry + gier_sum=374, + goli_sum=190, + asyst_sum=16, + interwencji_sum=0, # brak danych + nieobronionych_interwencji_sum=0, # brak danych + zoltych_kartek_sum=54, + czerwonych_kartek_sum=3, + wygranych_sum=0, # brak danych + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 +) + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="0vgcq6un", + imie="Robin", + nazwisko="van Persie", + data_urodzenia="06.08.1983", + czy_aktywny=False, + klub_id="undefined", # zakończył karierę + narodowosc="NED", + ilosc_trofeow=0, # brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=13, + wycena=0 # zakończył karierę +) + #Harry Kane + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=439, + minut_gry=0, # brak danych o czasie gry + gier_sum=439, + goli_sum=295, + asyst_sum=64, + interwencji_sum=0, # brak danych + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=48, + czerwonych_kartek_sum=1, + wygranych_sum=0, # brak danych + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 +) + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="v5HSlEAa", + imie="Harry", + nazwisko="Kane", + data_urodzenia="28.07.1993", + czy_aktywny=True, + klub_id="Bayern Monachium", + narodowosc="ENG", + ilosc_trofeow=0, # brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=14, + wycena=344_700_000 # PLN +) + #Ciro Immobile + self.simple_insert_one(statystyki_sportowcow, + ostatni_mecz=1, + ilosc_wystapien=455, + minut_gry=0, # brak danych o czasie gry + gier_sum=455, + goli_sum=250, + asyst_sum=51, + interwencji_sum=0, # brak danych + nieobronionych_interwencji_sum=0, + zoltych_kartek_sum=71, + czerwonych_kartek_sum=3, + wygranych_sum=0, + przegranych_sum=0, + remisow_sum=0, + wynik_sum=0, + meczow_do_wynikow_sum=0 +) + sportowiec = sportowcy( + zewnetrzne_id_zawodnika="4S9fNUYh", + imie="Ciro", + nazwisko="Immobile", + data_urodzenia="20.02.1990", + czy_aktywny=True, + klub_id="Besiktas", + narodowosc="IT", + ilosc_trofeow=0, # brak danych + pierwszy_mecz_id=1, + ostatni_gol_dla_id="undefined", + statystyki_id=15, + wycena=12_600_000 # PLN +) + + + + + session.commit() return 0 + return 1