如何使用SqlAlchemy创建和恢复备份?
我正在写一个Pylons应用程序,想要创建一个简单的备份系统,把每个表的数据都整理成一个文件,方便管理员下载。如果发生什么问题,可以用这个文件来恢复应用。
我可以用SqlAlchemy的序列化工具把表的数据整理成序列化格式,也能把它们恢复回来,但我就是不知道怎么把这些改动保存回数据库。
为了序列化我的数据,我是这样做的:
from myproject.model.meta import Session
from sqlalchemy.ext.serializer import loads, dumps
q = Session.query(MyTable)
serialized_data = dumps(q.all())
为了测试,我先清空了MyTable
,然后尝试用serialized_data
来恢复数据:
from myproject.model import meta
restore_q = loads(serialized_data, meta.metadata, Session)
但是这样似乎没有任何效果……我试着在之后调用Session.commit
,还逐个遍历restore_q
里的所有对象并添加它们,但就是没有用。
我漏掉了什么吗?或者有没有更好的方法来实现我想要的功能?我不想直接操作数据库,因为SqlAlchemy支持不同的数据库引擎。