#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
notlocalhost
, иначе ошибка была бы такой:Is the server running on host "localhost" (127.0.0.1) ...