2010-05-07 40 views
15

我正在寫一個Pylons應用程序,並且正在嘗試創建一個簡單的備份系統,其中每個表都被序列化並將其tar化爲單個文件供管理員下載,並在應用程序發生故障時使用它恢復應用程序。如何從SqlAlchemy創建和恢復備份?

我可以使用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支持不同的數據庫引擎,所以我不想直接觸及數據庫。

回答

10

您必須使用方法而不是Session.add()將反序列化的對象放回到會話中。

+0

Hooray!完美的作品,謝謝! – swilliams 2010-05-07 14:10:08