[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