python - 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_engine
with 。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)
解决方案
推荐阅读
- java - 为什么有些元素存在但不可交互/显示?
- javascript - 如何动态定义 PWA 的起始页
- angular - 在 ag-grid 中使用 rowDrag 和 dndSource
- django - 在 CI 期间在 Django 测试数据库中启用 PSQL hstore 扩展
- android - task.getResult().exists() 总是将我传递给相同的 if 条件
- excel - 从表中查找,列位于不同的工作簿上
- c - 与 strtok 一起使用的 C 自由变量
- reactjs - 在测试反应组件和运行测试覆盖率时,这些绿色数字代表什么?
- c# - 我可以通过动作选择 Selenuim 中的元素吗?
- reactjs - 从 React 到 Web API 的 MSAL 身份验证和授权