无法使用 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"
)
我正在运行在 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"
)