[ filmil @ 03.03.2004. 19:37 ] @
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

[ Gojko Vujovic @ 03.03.2004. 20:01 ] @
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
[ filmil @ 03.03.2004. 20:08 ] @
"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

[ sspasic @ 04.03.2004. 14:07 ] @
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?
[ filmil @ 04.03.2004. 17:08 ] @

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

[ sspasic @ 04.03.2004. 18:53 ] @
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.