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).
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:
Esto permitirá que la columna “id” se incremente automáticamente sin ningún problema.