使用pyodbc连接到在docker上运行的Postgres

问题描述 投票:0回答:2

尝试连接到docker内的Postgres数据库但遇到以下问题:

文件“”,第1行,pyodbc.OperationalError:('08001','[08001]无法连接到服务器:没有这样的文件或目录\ n \ n服务器本地运行并接受Unix域套接字上的\ n \ t连接“/tmp/.s.PGSQL.5432"?\n(101)(SQLDriverConnect)')

正在建立连接以下内容:

conn_str = ("DRIVER=/usr/local/lib/psqlodbcw.so;""DATABASE=mytestdb;""UID=postgres;""PWD=mysecretpassword""SERVER=localhost;""PORT=5432;");

conn = pyodbc.connect(conn_str)
python postgresql docker pyodbc
2个回答
1
投票

确保在您的docker容器上暴露端口5432,否则您将无法连接。这些信息可以清除您的想法。 https://medium.com/@lvthillo/connect-from-local-machine-to-postgresql-docker-container-f785f00461a7

在您的docker-compose.yml上将其更改为以下内容:

db:
image: postgres
ports:
  - 5432:5432

如果您已在本地计算机上安装了pg,则可以是5432或5435。


0
投票

您的应用程序正在尝试通过host / tmp /文件夹中的unix套接字文件连接postgres。

因此,在postgres docker-compose文件中配置docker容器的挂载点,如下所示:

volumes:
      - /tmp:/var/lib/postgresql

然后再次重建postgres容器。

© www.soinside.com 2019 - 2024. All rights reserved.