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

解决SQLAlchemy连接Docker-Compose PostgreSQL的主机名解析错误

解决容器外连接Docker Compose PostgreSQL服务的主机名解析问题

问题原因

Docker Compose创建的内部网络里,服务名(比如datawarehouse)只能被同网络下的其他容器识别解析,但宿主机(容器外环境)的DNS系统没这个服务名的映射,所以会出现无法解析主机名的错误。

解决办法

  • 方法一:用localhost替换服务名(最简便)

    1. 先确认你的docker-compose.yml中PostgreSQL服务配置了端口映射,比如:
      services:
        datawarehouse:
          image: postgres
          ports:
            - "5432:5432"  # 容器5432端口映射到宿主机5432端口
          environment:
            POSTGRES_USER: test
            POSTGRES_PASSWORD: test
            POSTGRES_DB: test
      
    2. 修改连接字符串为:
      postgresql://test:test@localhost/test
      
  • 方法二:在宿主机hosts文件添加映射

    1. 获取PostgreSQL容器的IP地址:
      docker inspect datawarehouse | grep "IPAddress"
      
    2. 编辑宿主机hosts文件:
      • Linux/macOS:编辑/etc/hosts,添加一行(替换[容器IP]为实际获取到的IP):
        [容器IP] datawarehouse
        
      • Windows:打开C:\Windows\System32\drivers\etc\hosts(需管理员权限),添加同样内容
    3. 完成后,原连接字符串postgresql://test:test@datawarehouse/test即可正常使用

验证代码示例

from sqlalchemy import create_engine

# 用方法一的连接字符串示例
engine = create_engine('postgresql://test:test@localhost/test')
try:
    with engine.connect() as conn:
        print("数据库连接成功!")
except Exception as e:
    print(f"连接失败:{str(e)}")

内容的提问来源于stack exchange,提问作者Mitchell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:10:08