Подключитесь к Postgres, работающему в докере с помощью pyodbc - PullRequest
0 голосов
/ 25 марта 2019

пытается подключиться к базе данных Postgres внутри докера, но возникла следующая проблема:

Файл "", строка 1, в pyodbc.OperationalError: ('08001', '[08001] не удалось подключиться к серверу: нет такого файла или каталога \ n \ tIs сервер, работающий локально и принимающий \ n \ tconnections в домене Unix сокет "/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 ]

1 голос
/ 25 марта 2019

Убедитесь, что в вашем докере контейнере вы открыли порт 5432, иначе вы не сможете подключиться.Эта информация может очистить ваши мысли.https://medium.com/@lvthillo/connect-from-local-machine-to-postgresql-docker-container-f785f00461a7

на вашем docker-compose.yml измените его на что-то вроде этого:

db:
image: postgres
ports:
  - 5432:5432

это может быть 5432 или 5435, если у вас уже есть pg на вашем локальном компьютере.

0 голосов
/ 25 марта 2019

Ваше приложение пытается подключить postgres через файл сокета unix в папке host / tmp /.

Итак, настройте точку монтирования для контейнера Docker в файле posgres docker-compose, как показано ниже:

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

затем перестроить контейнер postgres.

...