[Python] next record in mysqldb
Daniele Varrazzo
piro a develer.com
Lun 1 Ott 2007 17:56:20 CEST
Manlio Perillo ha scritto:
> Paolo Amodio ha scritto:
>> Buon giorno a tutti.
>> Una breve domanda.
>> Eseguita una query e ritornati i risultati ho la necessità di
>> avanzare, o retrocedere, di un record (i risultati popolano dei campi
>> in wxPython).
>> Attualmente e per il momento ho creato una funzione che, ricevuto il
>> valore attuale del record (in realtà del campo ID), effettua una nuova
>> query.
>> Il sistema mi sembra macchinoso.
>> Esiste qualche cosa di migliore?
>>
>
> Si, usare i cursori lato server.
> PostgreSQL li supporta, e sembra che anche MySQL dalla versione 5.0.2 lo
> faccia.
> http://dev.mysql.com/doc/refman/5.0/en/cursor-restrictions.html
Per quanto riguarda MySQLdb si possono avere cursori lato server usando la
classe SSCursor o altre classi derivate dal CursorUseResultMixIn, ma questo
non implementano il metodo scroll, per cui indietro non si torna (ma non è
idiota? mah...).
La classe CursorStoreResultMixIn, da cui deriva il normale Cursor, invece
implementa il metodo scroll(), che può essere usato per tornare indietro. Ma
tutto il dataset viene caricato nel client.
La documentazione a riguardo credo sia zero: occorre leggersi
"MySQLdb.cursor.py" per capirci qualcosa.
Paolo, se finora hai usato "cnn.cursor()" senza parametri, allora hai sempre
usato cursori client-side: usa cur.scroll(-1) per tornare indietro di un record.
In PostgreSQL ci sono i named cursor per fare queste cose: non so se scrollano
all'indietro ma, considerando la sanità mentale che caratterizza il mondo PG,
immagino di sì. Credo che all'OP gliene freghi il giusto comunque.
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
Maggiori informazioni sulla lista
Python