nocmatic / prevozi

Pri predmetu Osnove podatkovnih baz bova izdelala aplikacijo, na katero bodo lahko uporabniki dodali prevoze, ki jih ponujajo, ocenili uporabnika,
MIT License
0 stars 1 forks source link

Problem z executemany( , ) #2

Open PavesicL opened 7 years ago

PavesicL commented 7 years ago

V SQL_insert.py sem poskusil uporabit ukaz executemany namesto for zanke po execute, pa se zgodi napaka: TypeError: not all arguments converted during string formatting. U googlanjem nisem uspel odkrit kaj je narobe.

jaanos commented 7 years ago

executemany deluje na isti način kot execute, le da dovoli izvajanje več SQL stavkov - vsi morajo biti podani v vhodnem nizu. Drugi argument mora biti seznam ali terica vrednosti, ki nadomestijo vsak %s.

V vajinem primeru bo najlažje, če gresta kar z zanko for skozi seznam in vsakič naredita po en ukaz SQL:

for i in seznam_krajev:
    cur.execute("""INSERT INTO kraj (ime) VALUES (%s)""", [i])

Mimogrede, nima smisla, da v skripti za uvoz uvažata bottle, saj ne potrebujeta spletnega strežnika. Bolj smiselno bo morda, da za posamezne dele uvoza naredita funkcije, ki jih lahko po potrebi kličeta. Svetujem tudi, da pri uvozu odstranita autocommit - potem na koncu uvoza (če je vse šlo, kot je moralo) naredita še conn.commit(). Za uvoz se bosta morala prijaviti s svojima računoma, zato uvozita auth, ne auth_public (tega bosta uvozila v sami aplikaciji).

PavesicL commented 7 years ago

Če prav razumem zadnji odstavek, naj bo datoteka v kateri je geslo in ime za dostop do baze imenovana auth.py? Do zdaj je pri nama to auth_public.py - ne vem točno zakaj, saj imava v aplikaciji import auth_public as auth.

jaanos commented 7 years ago

Tako, ja - auth_public.py je namenjena "javnim" podatkom za dostop, auth.py pa zasebnim.

import auth_public as auth pomeni, da uvozita program auth_public.py v modul auth - tako do njegovih spremenljivk dostopata z auth.db, auth.host itd. V glavnem programu je seveda smiselno, da uvažata auth_public, saj želita, da lahko vajino aplikacijo uporablja kdorkoli. V programu za ustvarjanje baze in uvoz podatkov pa uvozita auth, saj uporabnik javnost ne bo imel zadostnih pravic za to (in bosta ta program poganjala le sama).