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

Я получаю странную ошибку при вставке некоторых данных из Python script в MySQL. Это в основном связано с пустой переменной, которую я вставляю. Я полагаю, что MySQL не любит пустые переменные, но есть ли что-то еще, что я могу изменить, чтобы он работал с моей инструкцией insert?

Я могу успешно использовать оператор IF, чтобы превратить его в 0, если его пустое значение, но это может испортить часть аналитики данных, которую я планирую сделать в MySQL позже. Есть ли способ конвертировать его в NULL или что-то такое, что MySQL принимает его, но ничего не добавляет?

Ответ 1

Сделайте быструю проверку пустым, и если это так, установите его равным NULL:

if(!variable_to_insert)
    variable_to_insert = "NULL"

... затем убедитесь, что вставленная переменная не находится в кавычках для инструкции insert, например:

insert = "INSERT INTO table (var) VALUES (%s)" % (variable_to_insert)
...

не нравится:

insert = "INSERT INTO table (var) VALUES ('%s')" % (variable_to_insert)
...

Ответ 2

При использовании mysqldb и cursor.execute() передайте значение None, а не "NULL":

value = None
cursor.execute("INSERT INTO table ('column1') VALUES (%s)", (value,))

Нашел ответ здесь

Ответ 3

Почему бы не установить переменную равную некоторой строке, например 'no price', а затем отфильтровать ее позже, когда вы хотите сделать математику по номерам?

filter(lambda x: x != 'no price',list_of_data_from_database)