首页 > 解决方案 > Psycopg2 无法连接到服务器

问题描述

我正在编写一个专有脚本来查询公司数据库以提取某些信息。我正在使用 Psycopg2。在这一点上,我使用的线路是这样的:

conn = psycopg2.connect("dbname='somedb' user='usr' host='something.azure.com' password='pswd' port='5432'")
cur = conn.cursor()
query = "something"
cur.execute(query)
results = cur.fetchall()

该脚本运行良好,直到几天前,在调试过程中快速连续运行后,我开始得到:

psycopg2.OperationalError: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.

仔细一看,我意识到我没有正确关闭连接。所以我将其修改为:

with psycopg2.connect("dbname='somedb' user='usr' host='something.azure.com' password='pswd' port='5432'") as conn:
    cur = conn.cursor()
    query = "something"
    cur.execute(query)
    results = cur.fetchall()

即使服务器端没有其他连接,错误仍然存​​在,因此这里不太可能是达到 max_connection 的原因。

奇怪的是,我可以通过 PGAdmin 访问同一台服务器或在同一台机器上使用sqlalchemy.create_enginewith 。pandas.read_sql此外,该脚本在另一个同事的机器上运行良好,同时通过 VPN 模仿我的 IP 地址。

编辑:sqlalchemy 只为我的机器工作了一次,之后我开始遇到同样的错误。我的 sqlalchemy 代码:

engine = create_engine('postgresql://{0}:{1}@{2}:5432/db'.format(USR, PSWD, HOST))
query = "something"
df = pd.read_sql(sql=query, con=engine)

标签: pythonsqlalchemypsycopg2

解决方案


推荐阅读