存储SQLAlchemy查询的结果以合并到另一个会话中

时间:2014-12-17 18:28:11

标签: python sqlalchemy

我有一个基于SQLAlchemy的工具,用于有选择地在两个不同的数据库之间复制数据以进行测试。我使用merge()函数从一个会话中获取模型对象并将它们存储在另一个会话中。我希望能够以某种中间形式存储源对象,然后在稍后的某个时间点merge()存储它们。

似乎有几个选项可以实现这一目标:

  • 导出DELETE / INSERT SQL语句。看起来很简单,我想我可以让SQLAlchemy给我INSERT语句,甚至可能是DELETE s。
  • 将数据转发到具有相同(或类似)架构的SQLite数据库文件,然后可以在以后作为源读取。
  • 以某种方式序列化数据,然后将它们读回内存以进行合并。我不知道SQLAlchemy是否有类似内置的东西。我不确定自己推出这个挑战会有什么挑战。

以前有人解决过这个问题吗?如果是这样,你的解决方案是什么?

编辑:我发现了一个基于SQLAlchemy的工具,名为dataset,它提供了我正在寻找的冻结功能,但似乎没有相应的解冻恢复数据的功能。

1 个答案:

答案 0 :(得分:1)

我之前没有使用它,但文档中描述的dogpile缓存技术可能就是你想要的。这允许您使用SQLAlchemy API查询缓存和从缓存查询:

http://docs.sqlalchemy.org/en/rel_0_9/orm/examples.html#module-examples.dogpile_caching