¿Cómo insertar valores ‘NULL’ en la base de datos PostgreSQL usando Python?

¿Existe una buena práctica para ingresar valores de clave NULL en una base de datos PostgreSQL cuando una variable es None en Python?

Ejecutando esta consulta:

 mycursor.execute('INSERT INTO products (user_id, city_id, product_id, quantity, price) VALUES (%i, %i, %i, %i, %f)' %(user_id, city_id, product_id, quantity, price)) 

da como resultado una excepción TypeError cuando user_id es None .

¿Cómo se puede insertar un NULL en la base de datos cuando un valor es None , usando el controlador psycopg2 ?

Para insertar valores nulos en la base de datos tiene dos opciones:

  1. omita ese campo de su statement INSERT, o
  2. utilizar None

Además: para protegerse contra la inyección de SQL, no debe utilizar la interpolación de cadena normal para sus consultas.

Debes pasar dos (2) argumentos a execute() , por ejemplo:

 mycursor.execute("""INSERT INTO products (city_id, product_id, quantity, price) VALUES (%s, %s, %s, %s)""", (city_id, product_id, quantity, price)) 

Alternativa # 2:

 user_id = None mycursor.execute("""INSERT INTO products (user_id, city_id, product_id, quantity, price) VALUES (%s, %s, %s, %s, %s)""", (user_id, city_id, product_id, quantity, price))