es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Psycopg2 no puede conectarse a PostgreSQL.

He configurado una base de datos PostgreSQL en Docker y actualmente estoy tratando de hacer que psycopg2-binary ejecute un script para crear tablas en la base de datos PostgreSQL. Sigo obteniendo este error y no sé/entiendo qué hacer a continuación. ¡Por favor ayuda!

Mi script:

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()

Error:
none
File "venv/lib/python3.8/site-packages/psycopg2/__init__.py", line 122, in connect
conn = connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: la conexión al servidor en el socket "/tmp/.s.PGSQL.5432" ha fallado: No existe el archivo o el directorio
¿Está el servidor ejecutándose de forma local y aceptando conexiones en ese socket?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que la biblioteca psycopg2 no puede conectarse al servidor PostgreSQL en el host y el puerto especificados. Específicamente menciona que la conexión falló porque no hay tal archivo o directorio como “/tmp/.s.PGSQL.5432”, que es el directorio de sockets predeterminado para PostgreSQL.

    Una posible razón de este error es que el servidor PostgreSQL no se está ejecutando o no está configurado para aceptar conexiones en el socket especificado. Para resolver esto, puedes:

    1. Verificar si el servidor PostgreSQL se está ejecutando ejecutando el comando docker-compose ps en el directorio donde se encuentra tu archivo Docker Compose. Esto te mostrará el estado de los contenedores en ejecución, incluido el contenedor de PostgreSQL. Si el contenedor no se está ejecutando, puedes iniciarlo usando el comando docker-compose up -d.
    2. Verificar si el contenedor de PostgreSQL está escuchando en el socket correcto ejecutando el comando docker logs <nombre_del_contenedor> donde <nombre_del_contenedor> es el nombre de tu contenedor de PostgreSQL como se especifica en el archivo Docker Compose. Busca cualquier error o advertencia que pueda indicar un problema con la configuración del servidor.

    3. Asegúrate de que las variables de entorno utilizadas en tu script estén correctamente configuradas con los valores apropiados. Puedes usar el comando echo $<variable_de_entorno> para verificar el valor de una variable de entorno específica. También asegúrate de que el número de puerto utilizado en el script coincida con el número de puerto utilizado por el contenedor de PostgreSQL.

    Una vez que hayas resuelto cualquier problema con la configuración del servidor y las variables de entorno, deberías poder conectarte al servidor PostgreSQL utilizando psycopg2 sin encontrar el error “la conexión al servidor en el socket falló”.

Comments are closed.