2024-03-29 11:58:58 发布
网友
我经常得到这个错误:ProgrammingError: The cursor's connection has been closed.
ProgrammingError: The cursor's connection has been closed.
在尝试执行查询之前,是否有方法检查我正在使用的连接是否已关闭?
我正在考虑编写一个包装器来执行查询。首先它会检查连接是否关闭,如果是,它会重新连接。这样做明智吗?
你也可以做duck typing。利用你需要的,抓住例外。99%的时间都可能没事。
duck typing
包装器是一个好主意,但我不知道任何API可以可靠地检查连接是否关闭。
因此,解决办法大致如下:
for retry in range(3): try: ... execute query ... return # Stop on success except e: if is_connection_broken_error(e): reconnect() continue raise raise # throw if the retry fails too often
另一个选项是检查是否可以获得一个游标(这是您希望从连接获得的许多次游标),否则重新初始化连接。它看起来像这样:
try: cursor = conn.cursor() except e: if e.__class__ == pyodbc.ProgrammingError: conn == reinit() cursor = conn.cursor()
你也可以做
duck typing
。利用你需要的,抓住例外。99%的时间都可能没事。包装器是一个好主意,但我不知道任何API可以可靠地检查连接是否关闭。
因此,解决办法大致如下:
另一个选项是检查是否可以获得一个游标(这是您希望从连接获得的许多次游标),否则重新初始化连接。它看起来像这样:
相关问题 更多 >
编程相关推荐