Как я могу вставить данные 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)