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.

la relación no existe en postgreSQL pero ya existe

He leído muchos artículos sobre mi problema pero nadie lo resuelve. Entonces puedes ver mi código aquí

DATABASE_URL = os.environ.get('url_de_mi_db')
con = None
try:
    con = psycopg2.connect(DATABASE_URL)
    cur = con.cursor()

print('Versión de la base de datos de PostgreSQL:')
# cur.execute('SELECT version()')
# cur.execute('SELECT * FROM qwerty')

# cur.execute(sql.SQL('SELECT * FROM {}').format(sql.Identifier('qwerty')))
# cur.execute(sql.SQL("INSERT INTO {} (chat_id, username, created_on) VALUES (8985972942, vovakirdan, 2022-01-05)").format(sql.Identifier('users')))
cur.execute("""INSERT INTO users (chat_id, username, created_on)
                VALUES (3131,
                vovakirdan,
                2022-01-05)""")

# muestra la versión del servidor de base de datos de PostgreSQL
db_version = cur.fetchone()
print(db_version)

# cierra la comunicación con HerokuPostgres
cur.close()

except Exception as error:
    print('Causa: {}'.format(error))

finally:
    # cierra la comunicación con el servidor de base de datos llamando a close()
    if con is not None:
        con.close()
        print('Conexión a la base de datos cerrada.')

y en mi tabla de la base de datos llamada “users” (llamada sin comillas) existe, pero todavía tengo este error: error

…relación “users” no existe

Todo el código comentado no funciona y envía el mismo error además de SELECT version(), que funciona perfectamente y prueba que la conexión funciona.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según el mensaje de error, parece que la tabla “users” no existe en la base de datos. Aquí hay algunos pasos que puedes seguir para diagnosticar y resolver el problema:

    1. Verifica que la tabla exista en el esquema correcto: Asegúrate de que la tabla “users” existe en el esquema correcto en tu base de datos PostgreSQL. Puedes hacer esto ejecutando la siguiente consulta SQL en un cliente de PostgreSQL como pgAdmin o psql:
    SELECT * FROM information_schema.tables WHERE table_name = 'users';
    

    Esto debería devolver al menos una fila con información sobre tu tabla “users”, incluyendo su esquema.

    1. Verifica errores de escritura o mayúsculas: Asegúrate de que la ortografía y las mayúsculas del nombre de la tabla coincidan exactamente en tu código Python y en la base de datos PostgreSQL. PostgreSQL distingue entre mayúsculas y minúsculas de forma predeterminada, por lo que “USERS” sería una tabla diferente a “users”.
    2. Verifica los permisos del usuario que se conecta a la base de datos: Asegúrate de que el usuario que estás utilizando para conectarte a la base de datos tenga los permisos necesarios para acceder y modificar la tabla “users”. Puedes verificar los permisos de un usuario ejecutando un comando como \du en psql.

    3. Intenta especificar el esquema en tus consultas SQL: Si la tabla “users” existe en un esquema distinto al esquema predeterminado para tu usuario de base de datos, es posible que necesites especificar el esquema de forma explícita en tus consultas SQL. Por ejemplo, si la tabla “users” está en un esquema llamado “public”, podrías intentar ejecutar la consulta SELECT * FROM public.users en tu código.

    4. Verifica el formato de la consulta SQL: Asegúrate de que la consulta SQL que estás utilizando para insertar datos en la tabla “users” sea correcta y siga la sintaxis correcta. Por ejemplo, es posible que necesites poner valores de cadena como ‘vovakirdan’ entre comillas, así:

    INSERT INTO users (chat_id, username, created_on) VALUES (3131, 'vovakirdan', '2022-01-05')
    

    Una vez que hayas identificado y solucionado el problema, deberías poder ejecutar consultas SQL correctamente contra la tabla “users” en tu base de datos PostgreSQL.

Comments are closed.