我正在编写一个 Pylons 应用程序,并尝试创建一个简单的备份系统,其中每个表都被序列化并压缩成一个文件,供管理员下载,并在发生不良情况时用于恢复应用程序。
我可以使用以下命令很好地序列化我的表数据SqlAlchemy 序列化器 https://docs.sqlalchemy.org/en/13/core/serializer.html,我也可以很好地反序列化它,但我不知道如何将这些更改提交回数据库。
为了序列化我的数据,我这样做:
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 支持不同的数据库引擎。
你必须使用Session.merge() http://www.sqlalchemy.org/docs/reference/orm/sessions.html#sqlalchemy.orm.session.Session.merge方法而不是Session.add()
将反序列化的对象放回会话中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)