Sqlalchemy保存到内存中

时间:2015-04-27 21:44:21

标签: python sqlalchemy

我的应用需要在离线时保存更改,并在重新连接时上传。

我知道我可以使用SQLite,json等来保存它们,但如果我能让sqlalchemy提交内存而不是减少代码,我会非常喜欢它。我不关心powerloss或程序崩溃atm。

我假设使用sessions.add()会这样做,当它重新连接时,sessions.commit()会提交所有更改,但是当我添加另一个时似乎会被覆盖。

这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用SQLite执行in-memory database

engine = create_engine('sqlite://')

查看您的autoflush设置:

  

如果为True,则所有查询操作都将在继续之前向此会话发出flush()调用。这是一个便利功能,因此不需要重复调​​用flush(),以便数据库查询检索结果。 autoflush通常与autocommit = False一起使用。在这种情况下,很少需要显式调用flush();你通常只需要调用commit()(刷新)来完成更改。

可能会对你不利,因为add声明:

  

在会话中放置一个对象   它的状态将在下一次刷新操作时持久保存到数据库中   重复调用add()将被忽略。与add()相反的是expunge()。

其他常用的短期数据存储选项包括Redis