You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Psycopg2连接本地PostgreSQL出现地址分配失败错误求助

解决Psycopg2无法连接localhost(::1)端口5432的问题

问题详情

使用Psycopg2连接PostgreSQL时出现错误:

Psycopg2: 连接到位于"localhost"(::1)、端口5432的服务器失败:无法分配请求的地址

复现步骤:

  • 安装依赖:pip install -r requirements.txt
  • 启动数据库:docker compose up -d
  • 运行脚本:python3 main.py

相关配置文件:

docker-compose.yml

version: '3.9'

services:
  postgres:
    image: postgres:latest
    restart: always
    env_file: .env
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

main.py

from psycopg2 import connect

from os import getenv
 
DB_USER = getenv('POSTGRES_USER')
DB_PASS = getenv('POSTGRES_PASSWORD')
DB_HOST = getenv('POSTGRES_HOST', 'localhost')
DB_PORT = getenv('POSTGRES_PORT', '5432')
DB_NAME = getenv('POSTGRES_NAME')

try:
    conn = connect(
        database=DB_NAME,
        user=DB_USER,
        password=DB_PASS,
        host=DB_HOST,
        port=DB_PORT
    )
    print("Database connected successfully")
except Exception as e:
    print(f"Database not connected successfully: {e}")

解决方案

方案1:强制使用IPv4地址连接

将连接地址从localhost改为127.0.0.1,避免localhost优先解析到IPv6地址导致连接失败。可通过两种方式实现:

  • 在.env文件中添加:POSTGRES_HOST=127.0.0.1
  • 直接修改main.py中的默认值:
    DB_HOST = getenv('POSTGRES_HOST', '127.0.0.1')
    

方案2:配置PostgreSQL监听IPv6地址

如果需要保留localhost作为连接地址,需修改PostgreSQL配置使其支持IPv6监听。在docker-compose.yml的postgres服务中添加启动命令:

services:
  postgres:
    # 其他配置保持不变
    command: postgres -c listen_addresses='*' -c ipv6=on

修改后重启容器:docker compose down && docker compose up -d

方案3:验证Docker容器状态

  1. 确认Postgres容器正常运行:docker ps,查看容器状态是否为Up
  2. 查看Postgres启动日志,确认监听端口:docker logs <postgres-container-id>,日志中应包含类似listening on IPv4 address "0.0.0.0", port 5432或listening on IPv6 address "::", port 5432的内容
  3. 验证本地端口是否被占用:lsof -i :5432(Linux/macOS)或netstat -ano | findstr :5432(Windows),确保5432端口未被其他程序占用

内容的提问来源于stack exchange,提问作者Bruno Henrique Peixoto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:50:11