gpt4 book ai didi

python - 确保 psycopg2 数据库连接处于事件状态

转载 作者:IT老高 更新时间:2023-10-28 22:02:23 26 4
gpt4 key购买 nike

我有一个 python 应用程序,它打开了一个可以在线挂起一个小时的数据库连接,但有时数据库服务器会重新启动,虽然 python 仍然有连接,但它无法使用 OperationalError 异常。

所以我正在寻找任何可靠的方法来“ping”数据库并知道连接是事件的。我检查了 psycopg2 文档,但找不到类似的东西。当然,我可以发出一些简单的 SQL 语句,例如 SELECT 1 并捕获异常,但我希望有一个本地方法,例如 PHP pg_connection_status

谢谢。

最佳答案

这个问题确实很老了,但仍然会在 Google 搜索中弹出,所以我认为知道 psycopg2.connection 实例现在有一个 closed attribute 是很有值(value)的。连接打开时为 0,连接关闭时大于零。下面的例子应该演示:

import psycopg2
import subprocess

connection = psycopg2.connect(
dbname=database,
user=username,
password=password,
host=host,
port=port
)

print connection.closed # 0

# restart the db externally
subprocess.check_call("sudo /etc/init.d/postgresql restart", shell=True)

# this query will fail because the db is no longer connected
try:
cur = connection.cursor()
cur.execute('SELECT 1')
except psycopg2.OperationalError:
pass

print connection.closed # 2

关于python - 确保 psycopg2 数据库连接处于事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1281875/

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