Как вставить значения "NULL" в базу данных PostgreSQL с помощью Python?

есть ли хорошая практика для входа NULL значения ключей для базы данных PostgreSQL, когда переменная None в Python?

запуск этого запроса:

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))

результаты в a TypeError исключения, когда user_id is None.

как может a NULL вставляется в базу данных при значении None, С помощью psycopg2 водителя?

1 ответов


для вставки нулевых значений в базу данных у вас есть два варианта:

  1. опустите это поле из инструкции INSERT или
  2. использовать None

также: для защиты от SQL-инъекции вы не должны использовать обычную интерполяцию строк для ваших запросов.

вы должны передать два (2) аргумента в execute(), например:

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

Вариант № 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))