Как я могу вставить NULL-данные в базу данных MySQL с помощью Python? - PullRequest
35 голосов
/ 01 апреля 2011

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

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

Ответы [ 3 ]

127 голосов
/ 17 января 2013

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

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

Найден ответ здесь

0 голосов
/ 01 апреля 2011

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

filter(lambda x: x != 'no price',list_of_data_from_database)
0 голосов
/ 01 апреля 2011

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

if(!variable_to_insert)
    variable_to_insert = "NULL"

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

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

не нравится:

insert = "INSERT INTO table (var) VALUES ('%s')" % (variable_to_insert)
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...