我想澄清一下预ping功能是如何与SqlAlchemy数据库池一起工作的。假设我尝试使用数据库池对数据库进行SQL查询。如果数据库池发送预ping来检查连接,并且连接已断开,它会自动处理吗?我所说的处理是指它重新连接,然后发送SQL查询?还是我必须在代码中自己处理这个问题?
谢谢!
从文档来看,是的,过时的连接是透明处理的:
调用应用程序不需要关心组织操作,以便能够从池中签出的陈旧连接中恢复。
。。。除非:
如果在运行"预ping"时数据库仍然不可用,则初始连接将失败,连接失败的错误为正常传播。在数据库可用于连接,但无法响应"ping"pre_ping"在放弃之前最多会尝试三次,传播上次收到的数据库错误。