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