У меня возникают проблемы с python, когда я пытаюсь вставить NULL
в поле с помощью подготовленного оператора mysqldb. Проблема в том, что python не любит NULL
без кавычек, а затем MySQL не любит 'NULL'
с кавычками; поэтому я пытаюсь найти способ вставить NULL
, что и python, и MySQL. Вот мой сценарий:python mysqldb inserting NULL с использованием подготовленного оператора
sqlFailInsert = """INSERT INTO efix_headers (PathID) VALUES (%s);"""
//then later in my code
failcur = self.db.query(self.sqlFailInsert, (pathID if pathID else NULL))
Это генерирует ошибку питона: global name 'NULL' is not defined
но когда я использую: pathID if pathID else 'NULL'
MySQL рассматривает его как строку (кстати, pathID поле представляет собой целое поле) и входит 0
для значения (как и при вводе строки в поле int).
Итак, мои вопросы: как я могу вставить NULL
в поле int с помощью подготовленного оператора и не нарушать правила python?
И MySQL будет оценивать 'Нет', чтобы автоматически NULL? – sadmicrowave
Да. «Значения SQL NULL представлены одиночным синтаксисом Python None на входе и выходе». Дополнительная информация: http://www.python.org/dev/peps/pep-0249/ – GreyZmeem