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
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python