2010-05-07 11 views
15

Escribo una aplicación Pylons, y estoy tratando de crear un sistema de copia de seguridad simple donde cada tabla se serialice y empate en un solo archivo para que un administrador la descargue y la use para restaurar la aplicación en caso de que algo malo ocurra.Cómo crear y restaurar una copia de seguridad desde SqlAlchemy?

Puedo serializar los datos de mi tabla muy bien usando el SqlAlchemy serializer, y puedo deserializarlo bien también, pero no puedo encontrar la forma de volver a introducir esos cambios en la base de datos.

Con el fin de serializar los datos de mi que estoy haciendo esto:

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

Con el fin de probar las cosas, sigo adelante y el truncamiento MyTable, y luego intentar restaurar utilizando serialized_data:

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

Esto no parece hacer nada ... Intenté llamar a Session.commit después del hecho, caminando individualmente por todos los objetos en restore_q y agregándolos, pero parece que nada funciona.

¿Qué me estoy perdiendo? ¿O hay una mejor manera de hacer lo que estoy buscando? No quiero pagar y tocar directamente la base de datos, ya que SqlAlchemy es compatible con diferentes motores de base de datos.

Respuesta

10

Tiene que usar el método en lugar de Session.add() para volver a colocar el objeto deserializado en la sesión.

+0

¡Hurra! Funciona perfectamente, gracias! – swilliams

Cuestiones relacionadas