Existe-t-il une bonne pratique pour saisir des valeurs de clé NULL
dans une base de données PostgreSQL lorsqu'une variable est None
en Python?
Exécution de cette requête:
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))
entraîne une exception TypeError
lorsque user_id
est None
.
Comment insérer un NULL
dans la base de données lorsqu'une valeur est None
, en utilisant le psycopg2
chauffeur?
Pour insérer des valeurs nulles dans la base de données, vous avez deux options:
None
Aussi: Pour vous prémunir contre l'injection SQL, vous ne devez pas utiliser d'interpolation de chaîne normale pour vos requêtes.
Vous devez passer deux (2) arguments à execute()
, par exemple:
mycursor.execute("""INSERT INTO products
(city_id, product_id, quantity, price)
VALUES (%s, %s, %s, %s)""",
(city_id, product_id, quantity, price))
Alternative n ° 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))
Avec le psycopg actuel, au lieu de None, utilisez une variable définie sur 'NULL'.
variable = 'NULL'
insert_query = """insert into my_table values(date'{}',{},{})"""
format_query = insert_query.format('9999-12-31', variable, variable)
curr.execute(format_query)
conn.commit()
>> insert into my_table values(date'9999-12-31',NULL,NULL)