Я пишу приложение 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 поддерживает различные механизмы базы данных.