Closed jaanos closed 4 years ago
Pozdravljeni, najprej hvala za opozorilo in predloge. Nepotrebne datoteke smo že izbrisali/umaknili, kakor smo tudi združili tabele po letih skupaj; se pravi, igralci skupaj, trenerji skupaj in ekipe skupaj. Po sezonah se sedaj med seboj v tabeli razlikujejo po dodatnem stolpcu sezona. Glede prenosa baze na PostgreSQL pa nisem/nismo najbolj prepričani kako to deluje. Ali to pomeni, da si moramo naložiti psycopg2 knjižico in se nato nekako sklicevati na _sem2020uporabnik v našem glavnem programu? Hvala za odgovore, Tim
Tako, ja - poglejte si, kako je to narejeno v vzorčnem repozitoriju.
Lep pozdrav, sem naredil prenos na postgresql bazo s psycopg2, ampak mi javlja napako psycopg2.errors.infailedsqltransaction: current transaction is aborted, commands ignored until end of transaction block, verjetno moram nekaj spreminiti v kodi, v sport.py? Začetna stran mi deluje, zato ker na njej ni nobene SQL poizvedbe, zato sklepam da se nekaj podre v povezavi na postgresql bazo, ali pa je napaka v sami kodi....Iz vzorčnega projekta mi ni najbolj jasno kaj je za spremeniti/kateri del kode ni v redu, prosim za pomoč.
Samo na hitro: opažam, da imate v poizvedbah še vedno vprašaje - namesto njih uporabite %s
.
Mimogrede, v auth_public.py
imaš @20timresnik svoje geslo, ki je tako za vekomaj objavljeno na internetu. Svetujem, da ga zamenjaš, tja pa daste podatke za prijavo z uporabnikom javnost
- seveda mu boste morali dati ustrezne pravice na tabelah. Poleg tega svetujem še, da poskrbite, da bo mogoče aplikacijo poganjati v Binderju. Za več podrobnosti glejte jan248/Borza#1.
Sem popravil poizvedbe in namesto ? vstavil notri %s. Sem dodal tudi povezavo za binder in spremenil uporabnika v javnost, tako da se ne povezuje več z mojim računom. Sedaj mi javlja napako 'nonetype' object is not iterable za %for (IGRALEC,EKIPA,POZICIJA,STAROST,VISINA,TEZA,DRZAVA,Sezona) in Sezona v sezona.html. Kakor sem bral po forumih, nonetype pomeni da imam prazno tabelo, torej da moja poizvedba SQL Sezona = cur.execute("SELECT IGRALEC,EKIPA,POZICIJA,STAROST,VISINA,TEZA,DRZAVA,Sezona from igralci WHERE Sezona=%s",(Sezona,)) vrne prazno tabelo. Kako bi lahko to rešil/zakaj se to dogaja?
Opažam, da imate tako v bazi kot tudi na sami spletni aplikaciji vse stvari po trikrat, za vsako sezono. Tega ne počnite - imejte npr. eno tabelo za igralce, kjer poleg obstoječih stolpcev dodaste še enega za sezono. Tudi v aplikaciji lahko potem stvari poenotite - sezona se bo torej pojavljala kot parameter v URL-ju.
Da se podatki ne bodo ponavljali, bi bilo smiselno imeti posebej tabele za igralce, trenerje (morda skupaj kot osebe) in ekipe s podatki, ki se čez čas ne spreminjajo - potem imate v tabelah za sezonske podatke reference na te tabele. Pazite, da smiselno izbirate glavne ključe - pri ekipah je to lahko kratica, pri osebah pa raje nek ID (tip
SERIAL
). Pri sezonskih podatkih bo v glavnem ključu zagotovo sezona in še vsaj ena od referenc (odvisno od tega, ali lahko igralci in trenerji med sezono menjajo klub) - na ER diagramu torej te tabele ustrezajo šibkim entitetam.Svetujem, da čim prej svojo bazo prenesete na PostgreSQL strežnik
baza.fmf.uni-lj.si
(za namene projekta imate tam vsak svojo bazosem2020_uporabnik
- delajte na eni od njih in si dodelite pravice). Tako ne bo potrebno naknadno prilagajati celotne kode za delo s PostgreSQL.Še to: v
.gitignore
imate vrstico__pycache__
, a se vam je ta mapa vseeno izmuznila na repozitorij - svetujem, da jo izbrišete. Prav tako lahko pobrišete tudi mapo.vscode
in dodaste ustrezno vrstico v.gitignore
.