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.

Hola, estoy intentando crear una funcionalidad de inserción en Python y Postgres SQL como backend.

Estoy intentando crear una funcionalidad de inserción en Python con Postgres como backend.

A continuación está mi código:

def insert(car_make, car_model, year, first_owner, vinnumber):
   conn=psycopg2.connect("dbname='CarInventorydb' user='postgres' password='password' host='localhost' port='5432'")
   cur=conn.cursor()
   cur.execute("INSERT into carInventory(id, car_make, car_model, year, first_owner, vinnumber) VALUES (DEFAULT, %s, %s, %s, %s, %s)", (car_make, car_model, year, first_owner, vinnumber))
   conn.commit()
   conn.close()

insert("Honda", "Civic", "2003", 'true', "3sdfSKHAN")

He intentado de varias formas, pero obtengo diferentes errores. Lo que estoy tratando de lograr es que al insertar un valor, el campo “id” se incremente automáticamente como lo he configurado. Sin embargo, aún me arroja un error de valor nulo. Ver el error a continuación:

Error

File "C:\Users\14168\Dropbox\PC\Desktop\Car_Store\backend.py", línea 21, en insert
    cur.execute("INSERT into carInventory(id, car_make, car_model, year, first_owner, vinnumber) VALUES (DEFAULT, %s, %s, %s, %s, %s)", (car_make, car_model, year, first_owner, vinnumber))
    psycopg2.errors.NotNullViolation: El valor nulo en la columna "id" de la relación "carinventory" viola la restricción de no nulidad
    DETALLE:  La fila que falla contiene (null, Honda, Civic, 2003, true, 3sdfSKHAN).
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según el mensaje de error, parece que hay una restricción de no nulidad en la columna “id” en la tabla “carInventory”. Esto significa que la columna “id” no puede tener asignado un valor nulo.

    En el código proporcionado, el valor de “id” se establece en “DEFAULT”, lo cual se supone que incrementará automáticamente la columna “id”, pero está dando un error de valor nulo.

    Una forma de solucionar este problema es eliminar la columna “id” de la consulta y permitir que se incremente automáticamente.

    Aquí tienes un fragmento de código actualizado:

    def insert(car_make, car_model, year, first_owner, vinnumber):
        conn = psycopg2.connect("dbname='Car_Inventory_db' user='postgres' password='password' host='localhost' port='5432'")
        cur = conn.cursor()
        cur.execute("INSERT into carInventory(car_make, car_model, year, first_owner, vinnumber) VALUES (%s, %s, %s, %s, %s)", (car_make, car_model, year, first_owner, vinnumber))
        conn.commit()
        conn.close()
    
    insert("Honda", "Civic", "2003", 'true', "3sdfSKHAN")
    

    Esto permitirá que la columna “id” se incremente automáticamente sin ningún problema.

Comments are closed.