gpt4 book ai didi

python - SQLAlchemy session 重新连接

转载 作者:太空狗 更新时间:2023-10-30 00:36:05 24 4
gpt4 key购买 nike

如果查询返回 OperationalError(例如用户无权访问数据库或类似情况),我如何强制我的引擎重新连接?

engine = create_engine(url, pool_recycle=3600)
Session = sessionmaker(bind=engine)

try:
sesh = Session()
sesh.query....
sesh.close()
except OperationalError:
# force engine to reconnect here somehow?

最佳答案

如果您捕获到指示连接在操作期间关闭的错误,则 SQLAlchemy 会在下一次访问时自动重新连接。但是,当数据库断开连接时,您的事务就消失了,因此 SQLAlchemy 要求您在 Session 上发出 rollback() 以便在您的应用程序中建立一个新事务将发生。然后您需要重新开始整个交易。

处理这个问题有几个角度。您应该通读 Dealing with Disconnects说明了两种使用断开连接的方法的文档部分。除此之外,如果您真的想从中断的地方继续您的交易,您需要“重播”整个过程,假设您在交易中做了不止一件事情。这最适合将需要执行的操作打包到可以再次调用的函数中的应用程序代码。请注意,SQLAlchemy 的 future 版本可能会引入一个名为 Transaction Replay Extension 的扩展,它提供了另一种方法来执行此操作,但是它会有很多警告,因为以通用方式重放丢失的事务不是一件小事

关于python - SQLAlchemy session 重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23747742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com