• 5 odgovora
  • 5.267 pregleda
Python i njegovi izuzeci 03.03.2004. u 19:37 · pre 275 meseci #1
Code:

 result = self.cursor.fetchone()

Funkcija fetchone() vraća tuple koji, igrom slučaja sadrži samo jedan element; dakle vidi se kao, npr. (6L,). Zanimljivo je da:
Code:
result[0]

radi, a da
Code:
self.cursor.fetchone()[0]


ne radi, odnosno daje not subscriptable  izuzetak, iako bi po svoj prilici te dve stvari trebale da daju istovetan rezultat 6L. Zašto je to tako?

f

Re: Python i njegovi izuzeci 03.03.2004. u 20:01 · pre 275 meseci #2
Zato što je to jezik za zezanje i pravljenje prototipa programa na brzinu, pa se to posle napiše u nečem ozbiljnom poput perla da radi kako valja.

grmbh
Re: Python i njegovi izuzeci 03.03.2004. u 20:08 · pre 275 meseci #3
"Gojko Vujovic" wrote:
Citat:
Zato što je to jezik za zezanje i pravljenje prototipa programa na brzinu, pa se to posle napiše u nečem ozbiljnom
Aaaaaa... sad je meni jasno!

f

p.s. Naravno na ovu poruku odgovaram samo da bih video šta će news server da uradi s njom...

f

Re: Python i njegovi izuzeci 04.03.2004. u 14:07 · pre 275 meseci #4
Zanimljivo, kod mene radi korektno.
Code:

db=MySQLdb.connect(...)
...
c=db.cursor()
c.execute("""SELECT ...""")
print c.fetchone()[0];

Pretpostavljam da ti je self.cursor isto što i kod mene c?
Re: Python i njegovi izuzeci 04.03.2004. u 17:08 · pre 275 meseci #5

Citat:
Zanimljivo, kod mene radi korektno
Čini mi se da nisi razumeo o čemu se radi; moguće da nisam dovoljno naglasio. Upit u SQL bazu radi i to uopšte nije predmet pitanja.

Ali u slučaju da postoji samo jedan ulaz u tabelu, dakle kad je rezultat oblika (ulaz,), on se ne može pokupiti direktno referenciranjem nultog elementa tabele, već se prvo taj rezultat mora  proslediti u promenljivu.

Code:
a = self.cursor.fetchone()[0] 
 

ne radi ali zato ovo radi:

Code:
var = self.cursor.fetchone()
 a = var[0]  


iako je kod ekvivalentan. Napominjem da se ovo dešava samo kad upit proizvede tabelu dužine 1. Ako tabela ima dužinu 2 ili više, gornje dve stvari rade istovetno.

f

Re: Python i njegovi izuzeci 04.03.2004. u 18:53 · pre 275 meseci #6
Da, u pravu si - promakao mi je ovaj uslov 'jedan ulaz u tabelu'.

U svakom slucaju, kad sam promenio SELECT da radi upit po jednoj koloni (dakle fetchone() vraca tuple sa jednim elementom) i dalje je radilo c.fetchone()[0],
a radilo je i kada sam upit ogranicio da daje samo jedan red tabele, kao i kad sam c stavio da bude promenljiva instance klase.

Mozda je razlika u verziji python-a - kod mene je 2.2.1 na Linux-u.

Inace, kod gore sam naveo da pokazem kako sam dosao do promenljive c - ne poznajem dovoljno python tako da nisam siguran da se do kursora ne moze doci na neki drugi nacin.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme