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