【问题标题】:How to create and restore a backup from SqlAlchemy?如何从 SqlAlchemy 创建和恢复备份?
【发布时间】:2011-02-16 17:13:14
【问题描述】:

我正在编写一个 Pylons 应用程序,并且正在尝试创建一个简单的备份系统,其中每个表都被序列化并打包成一个文件供管理员下载,并在发生坏事时用来恢复应用程序。

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

为了序列化我的数据,我这样做:

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支持不同的数据库引擎,所以我不想掏空直接接触数据库。

【问题讨论】:

    标签: python serialization sqlalchemy pylons


    【解决方案1】:

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

    【讨论】:

    • OP 中需要替换的Session.add() 调用在哪里?是否缺少代码行?
    • @Efren 缺失的行在 OP 中被描述为“遍历 restore_q 中的所有对象并添加它们”短语。
    猜你喜欢
    • 1970-01-01
    • 2016-08-10
    • 2018-10-11
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 2021-02-05
    相关资源
    最近更新 更多