Daniele Varrazzo ha scritto:
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...).


Almeno tornare indietro non dovrebbe essere una esigenza comune (e uno può implementarlo lato client, facendo il caching delle ultime N righe).

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.


Per psycopg2 l'unica cosa che ho trovato è un esempio:
http://initd.org/svn/psycopg/psycopg2/trunk/examples/fetch.py

> [...]


Saluti  Manlio Perillo
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a