[Linuxtrent] Re: problema con treeview e formattazione dei numeri

  • From: _v_tiziano <tiziano.lattisi@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Fri, 30 Dec 2005 11:39:19 +0100

Il 29/12/05, Lele Gaifax<lele@xxxxxxxxxxxxxxxxxxx> ha scritto:

> Perdona, salta all'occhio: la connessione al DB è ragionevole farla una
> tantum, fuori da un ciclo

giusto qualche spunto... un'idea potrebbe esser equesta:

# dblayer.py
class dblayer:
    """
    Layer di connessione al database
    """

    instance = None

    def __init__(self):
            conn_str = 'la tua stringa di connessione'
            self.conn = psycopg.connect(conn_str, serialize=0)


    def execute(self, sqlstr, pars=None):
        """
        """
        cur = self.conn.cursor()
        if pars:
            cur.execute(sqlstr, pars)
        else:
            cur.execute(sqlstr)
        try:
            rs = cur.fetchall()
            return rs, [i[0] for i in cur.description]
        except:
            return None, None


def GetDbLayer():
    """
    Ottiene riferimento all'istanza di dbLayer
    """
    if dblayer.instance == None:
        dblayer.instance = dblayer()
    return dblayer.instance


che puoi utilizzare in ogni parte del codice con questa sintassi:

from dblayer import GetDbLayer

dbl = GetDbLayer()
rs, fields = dbl.execute(sqlstr, pars)

ogni volta che ti fai passare un'istanza di dblayer ottieni un
riferimento all'unica creata (questo è stato un consiglio di lele di
quelche bel tempo fa...), e ad ogni execute ottieni sia il recordset
tradizionale, che i nomi ordinati dei campi, in modo da poter fare
qualcosa tipo:

map(lambda r: dict(map(lambda x,y: (x, str(r[y])), fields,
range(len(fields)))), rs)

per ottenere un dizionario dal record estratto... (spero di aver
scritto giusto...).


ciao ciao
tiziano
--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: