Python 如何从SqlAlchemy创建和恢复备份?

Python 如何从SqlAlchemy创建和恢复备份?,python,serialization,sqlalchemy,pylons,Python,Serialization,Sqlalchemy,Pylons,我正在编写一个Pylons应用程序,并试图创建一个简单的备份系统,在这个系统中,每个表都被序列化并压缩到一个文件中,供管理员下载,并在发生错误时用于恢复应用程序 使用可以很好地序列化表数据,也可以很好地反序列化表数据,但我不知道如何将这些更改提交回数据库 为了序列化我的数据,我正在执行以下操作: from myproject.model.meta import Session from sqlalchemy.ext.serializer import loads, dumps q = Sessi

我正在编写一个Pylons应用程序,并试图创建一个简单的备份系统,在这个系统中,每个表都被序列化并压缩到一个文件中,供管理员下载,并在发生错误时用于恢复应用程序

使用可以很好地序列化表数据,也可以很好地反序列化表数据,但我不知道如何将这些更改提交回数据库

为了序列化我的数据,我正在执行以下操作:

from myproject.model.meta import Session
from sqlalchemy.ext.serializer import loads, dumps
q = Session.query(MyTable)
serialized_data = dumps(q.all())
为了进行测试,我先截断
MyTable
,然后尝试使用
序列化的_数据进行恢复:

from myproject.model import meta
restore_q = loads(serialized_data, meta.metadata, Session)
这似乎没什么用。。。我尝试在事后调用
会话.commit
,逐个遍历
restore\u q
中的所有对象并添加它们,但似乎没有任何效果


我错过了什么?还是有更好的方法来实现我的目标?我不想直接接触数据库,因为SqlAlchemy支持不同的数据库引擎。

您必须使用方法而不是
会话。add()
将反序列化对象放回会话。

需要替换的OP中的
会话。add()
调用在哪里?是否缺少代码行?@Efren缺少的行在OP中用“遍历restore_q中的所有对象并添加它们”短语描述。