Psycopg2 не может подключиться к PostgreSQL

#postgresql #psycopg2

#postgresql #psycopg2

Вопрос:

Я настроил базу данных PostgreSQL, работающую в Docker, и в настоящее время пытаюсь заставить psycopg2-binary запустить скрипт для создания таблиц в базе данных PostgreSQL. Я продолжаю получать эту ошибку, и я не знаю/не понимаю, что делать дальше. Пожалуйста, помогите!

Мой сценарий:

 import psycopg2 import os from dotenv import load_dotenv  HOST = os.environ.get("POSTGRES_HOST") USER = os.environ.get("POSTGRES_USER") PASSWORD = os.environ.get("POSTGRES_PASSWORD") DATABASE = os.environ.get("POSTGRES_DB") PORT = os.environ.get("POSTGRES_PORT")  class Connection():  def __init__(self):  self.conn = psycopg2.connect(  database=DATABASE,  user=USER,  password=PASSWORD,  host=HOST,  port=PORT  )   self.cursor = self.conn.cursor()  

Ошибка:

 File "venv/lib/python3.8/site-packages/psycopg2/__init__.py", line 122, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync) psycopg2.OperationalError: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory Is the server running locally and accepting connections on that socket?  

Комментарии:

1. Если Postgres работает в docker, вы не сможете подключиться через сокет. Какова ценность POSTGRES_HOST? Это не должен быть локальный хост.

2. @Jeremy Значение POSTGRES_HOST показано ниже. « POSTGRES_USER=пользователь POSTGRES_PASSWORD=пароль POSTGRES_DB=nba POSTGRES_HOST=postgres POSTGRES_PORT=5432 «

3. Выполняется ли сценарий в одном и том же контейнере Docker? Можете ли вы подключиться к базе данных с помощью psql ? HOST Действительно postgres ли это и если да, то соответствует ли local это (сокету)?. Добавьте ответы в качестве обновления к вашему вопросу.

4. @Jeremy, он на самом деле пытается подключиться к local not localhost , иначе ошибка была бы такой: Is the server running on host "localhost" (127.0.0.1) ...