无法使用 psycopg2 连接到 docker 容器中的 postgres 数据库 运行

Unable to connect to postgres database running in a docker container using psycopg2

我正在运行在 Windows 10 机器上使用 Docker 桌面在 docker 容器内安装一个 postgres 数据库。我想 运行 使用 psycopg2 对数据库进行 postgresql 查询,但我无法建立与数据库的连接。我使用以下命令 运行 数据库

docker run --name thedatabase -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_HOST_AUTH_METHOD=md5 postgres:13.5

我使用 docker inspect 获取数据库的 IP 地址。我使用以下代码使用 psycopg2.

与数据库建立连接
import psycopg2
from psycopg2 import OperationalError

def create_connection(db_name, db_user, db_password, db_host, db_port):
    connection = None
    try:
        connection = psycopg2.connect(
            database=db_name,
            user=db_user,
            password=db_password,
            host=db_host,
            port=db_port,
        )
        print("Connection to PostgreSQL DB successful")
    except OperationalError as e:
        print(f"The error '{e}' occurred")
    return connection

if __name__=="__main__":
    connection = create_connection(
    "thedatabase", "postgres", "postgres", "172.17.0.2", "5432"
)

我收到以下错误

The error connection to server at 172.17.0.2, port 5432 failed: Connection timed out (0x0000274C/10060) Is the server running on that host and accepting TCP/IP connections?
occurred

如有任何帮助,我们将不胜感激。谢谢。

如果您的 python 脚本未在 docker 中执行,请尝试将 docker ip 替换为 localhost

if __name__=="__main__":
    connection = create_connection(
    "thedatabase", "postgres", "postgres", "localhost", "5432"
)