Massimo ha scritto:
Si, il subject fa pena, ma non m'è venuto in mente altro...
Sto cercando di farmi un framework con SQLAlchemy. Vorrei fare in modo che un oggetto (mappato con un mapper su una Table, ma questo poco importa...) disponga di un metodo .read() che legga, appunto, i valori dal dbms.

Il problema è che qualcos'altro restituisce quell'oggetto una volta caricato. In particolare, funziona:

caricato = session.query(caricato.__class__).get(pk_tuple)

Io però ora vorrei scrivere il metodo .read(), qualcosa di simile a:

    def read(self, keyvalues=None):
        '''loads the object in memroy'''

        if keyvalues is None:
            keyvalues = self.getPkValues()
        tmp = self.session.query(self.__class__).get(keyvalues)
        if tmp is not None:
            # fare qualcosa

In tmp ho l'oggetto caricato (se esiste, altrimenti None), ma è un'istanza diversa dall'oggetto su cui ho chiamato .read()

Quello che mi/vi chiedo è se sia possibile (prima di tutto concettualmente) fare in modo che quel "# fare qualcosa" corrisponda a trasformare in toto l'oggetto puntato da self nell'oggetto puntato da tmp.
Qualche idea o commento?


In linea di massima quello che vuoi fare non mi sembra il modo migliore di procedere.

Perchè ti serve una cosa del genere?

Per quanto riguarda la parte tecnina, ricorda che a fini pratici due oggetti sono uguali se il loro stato è uguale.

In teoria quindi bastarebbe fare
self.__dict__.update(tmp.__dict__)

Ma non tutto lo stato si trova nel dizionario, ci sono anche le property.
Così su due piedi non so dirti come fare a copiare tutto.


Grazie,
Max.

p.s. ho provato ad iscrivermi alla ml di SQLAlchemy, gestita da google, e ricevo i messaggi ma non riesco a spedirne. Qualcuno l'ha mai usata e mi può gentilmente suggerire "le basi"? Grazie ancora...


Google non ti manda i messaggi che tu hai spedito, come succede in questa mailing list, ad esempio.
Hai provavo a vedere dall'interfaccia web?



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

Rispondere a