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

Docker化Python容器无法连接Docker部署的PostgreSQL数据库

解决Docker环境中Python连接PostgreSQL的两个问题

问题1:无法解析主机名"postgres"

原因:Python容器与PostgreSQL服务不在同一个Docker网络中,Docker的服务名解析仅在同网络内生效。
解决方法:

  • 方法一(推荐):在docker-compose.yml中把Python服务加入postgres网络,示例配置:
    python-app:
      build: .
      networks:
        - postgres  # 和PostgreSQL服务使用同一网络
    
  • 方法二:手动运行Python容器时指定网络:
    docker run --network postgres your-python-image
    

问题2:finally块中connection变量未定义的NameError

原因:当数据库连接代码抛出异常(比如主机解析失败),connection变量还未被赋值就进入finally块,触发未定义错误。
解决方法:提前初始化connection为None,在finally块中判断变量存在后再执行关闭操作,示例代码:

import psycopg2

connection = None  # 提前初始化变量
try:
    connection = psycopg2.connect(
        host="postgres",
        database="your-db-name",
        user="your-db-user",
        password="your-db-password"
    )
    # 执行数据库操作逻辑
except psycopg2.Error as e:
    print(f"数据库连接出错: {e}")
finally:
    if connection is not None:
        connection.close()
        print("数据库连接已关闭")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:24:52