擅长:python、mysql、java
<p>如果捕捉到指示连接在操作期间已关闭的错误,SQLAlchemy将在下次访问时自动重新连接。但是,当数据库断开连接时,您的事务就消失了,因此SQLAlchemy要求您在会话中发出rollback(),以便在应用程序中建立一个新事务将要发生。然后你需要重新开始你的整个交易。</p>
<p>处理这个问题有几个角度。您应该通读文档的<a href="http://docs.sqlalchemy.org/en/rel_0_9/core/pooling.html?highlight=reconnect#dealing-with-disconnects">Dealing with Disconnects</a>部分,其中说明了使用断开连接的两种方法。除此之外,如果你真的想从你离开的地方接你的交易,你需要“重播”整个事情,假设你在你的交易中做了不止一件事。这最适合于应用程序代码,它将需要执行的操作打包到一个可以再次调用的函数中。请注意,SQLAlchemy的未来版本可能会引入一个名为<strong>事务重放扩展的扩展,它提供了另一种方法来实现这一点,但是它会有很多警告,因为以通用方式重放丢失的事务并不是一件小事。</p>