2010-05-07 8 views
15

Sto scrivendo un'app Pylons e sto provando a creare un semplice sistema di backup in cui ogni tabella viene serializzata e tarata in un unico file da scaricare da un amministratore, e utilizzare per ripristinare l'app in caso di problemi.Come creare e ripristinare un backup da SqlAlchemy?

Posso serializzare i dati della mia tabella con il numero SqlAlchemy serializer e posso anche deserializzare bene, ma non riesco a capire come riportare tali modifiche nel database.

Per serializzare miei dati sto facendo questo:

from myproject.model.meta import Session 
from sqlalchemy.ext.serializer import loads, dumps 
q = Session.query(MyTable) 
serialized_data = dumps(q.all()) 

Al fine di testare le cose, vado avanti e troncamento MyTable, e quindi tentare di ripristino tramite serialized_data:

from myproject.model import meta 
restore_q = loads(serialized_data, meta.metadata, Session) 

Questo non sembra fare nulla ... Ho provato a chiamare un Session.commit dopo il fatto, camminando individualmente tra tutti gli oggetti in restore_q e aggiungendoli, ma niente sembra funzionare.

Cosa mi manca? O c'è un modo migliore per fare ciò che sto puntando? Non voglio eseguire il bombardamento e toccare direttamente il database, poiché SqlAlchemy supporta diversi motori di database.

risposta

10

È necessario utilizzare il metodo anziché Session.add() per reinserire l'oggetto deserializzato nella sessione.

+0

Urrà! Funziona perfettamente, grazie! – swilliams