Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 测试Postgres DB的连接_Python_Postgresql_Psycopg2 - Fatal编程技术网

Python 测试Postgres DB的连接

Python 测试Postgres DB的连接,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,如果软件连接到特定的Postgre DB,我想在GUI上放置一个按钮。我编写了一个小测试函数:如果它能连接到数据库,它将返回True,如果不能,它将返回False 代码是有效的,但有一个问题:如果没有连接(我只是拔出网线,没有其他变化),它只是简单的 花太多时间。 如果没有连接,你能帮我加快代码速度吗 下面是我的简单测试函数: import psycopg2 def postgres_test(): try: conn = psycopg2.connect("dbna

如果软件连接到特定的Postgre DB,我想在GUI上放置一个按钮。我编写了一个小测试函数:如果它能连接到数据库,它将返回True,如果不能,它将返回False

代码是有效的,但有一个问题:如果没有连接(我只是拔出网线,没有其他变化),它只是简单的 花太多时间。 如果没有连接,你能帮我加快代码速度吗

下面是我的简单测试函数:

import psycopg2

def postgres_test():

    try:
        conn = psycopg2.connect("dbname='mydb' user='myuser' host='my_ip' password='mypassword'")
        conn.close()
        return True
    except:
        return False

谢谢你的评论。是的,它与超时有关

以下是我的快速代码:

import psycopg2

def postgres_test():

    try:
        conn = psycopg2.connect("dbname='mydb' user='myuser' host='my_ip' password='mypassword' connect_timeout=1 ")
        conn.close()
        return True
    except:
        return False

如果超时是无法连接的一个可能原因,恐怕您做得再好不过了,您必须等到超时结束。您似乎可以将超时时间(以秒为单位)传递给调用
connect()
,如下所述。这是否符合您的要求?如果连接延迟一天,这可能会产生误报。在任何情况下,用户都可以再次按下该按钮进行双重检查。实际上,如果DB是本地的,那么答案应该很快,因此不太可能出现误报。你可以接受你自己的答案。