如何检查 python 中持久 ibm_db 连接的状态

How to check status of long lasting ibm_db connection in python

我正在开发 API 从 DB2 读取数据和 return 相应的结果(在 Python 上使用 Flask)。最初我在每次 API 调用时都打开了连接,但由于每秒连接数在增长,我认为最好打开一次数据库连接,并且仅在 closed/failed 出于任何原因时才重新打开它。而这正是我不能做的,因为我找不到 return 连接状态的函数或方法。我试过了:

conn = ibm_db.connect(dbname, dbuser, dbpswd)
if conn:
    print('ok')
else:
    print('not ok')
print(conn)

ibm_db.close(conn)
if conn:
    print('ok')
else:
    print('not ok')
print(conn)}

它 return编辑:

ok
<ibm_db.IBM_DBConnection object at 0xa000000012bd530>
ok
<ibm_db.IBM_DBConnection object at 0xa000000012bd530>

所以这绝对不适用于关闭连接。有没有办法检查之前打开的连接是否仍然存在?

在 python 级别有 bool ibm_db.active(IBM_DBConnection connection) 方法,其中 returns 是真还是假。

您还可以运行定期查询看门狗。

您是否针对您的用例调查了 pconnect() 方法,它可能更合适。?

请记住,如果连接空闲时间超过一定时间(例如 2 小时),连接上的 TCPIP 心跳也可能过期,在这种情况下 Db2-server 可能会关闭连接。