[Python] next record in mysqldb

Manlio Perillo manlio_perillo a libero.it
Lun 1 Ott 2007 18:10:13 CEST


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


Maggiori informazioni sulla lista Python