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

时间:2019-03-25 01:01:01

标签: python postgresql docker pyodbc

试图连接到Docker内部的Postgres数据库,但遇到以下问题:

  

pyodbc.OperationalError中的文件“”,第1行:('08001',   '[08001]无法连接到服务器:没有这样的文件或目录\ n \ tIs   服务器在本地运行并在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)

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

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

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

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

然后再次重建postgres容器。

相关问题