我的应用需要在离线时保存更改,并在重新连接时上传。
我知道我可以使用SQLite,json等来保存它们,但如果我能让sqlalchemy提交内存而不是减少代码,我会非常喜欢它。我不关心powerloss或程序崩溃atm。
我假设使用sessions.add()会这样做,当它重新连接时,sessions.commit()会提交所有更改,但是当我添加另一个时似乎会被覆盖。
这可能吗?
答案 0 :(得分:1)
您可以使用SQLite执行in-memory database:
engine = create_engine('sqlite://')
查看您的autoflush
设置:
如果为True,则所有查询操作都将在继续之前向此会话发出flush()调用。这是一个便利功能,因此不需要重复调用flush(),以便数据库查询检索结果。 autoflush通常与autocommit = False一起使用。在这种情况下,很少需要显式调用flush();你通常只需要调用commit()(刷新)来完成更改。
可能会对你不利,因为add
声明:
在会话中放置一个对象 它的状态将在下一次刷新操作时持久保存到数据库中 重复调用add()将被忽略。与add()相反的是expunge()。
其他常用的短期数据存储选项包括Redis。