Не могу вставить None в поле mysql int

0

Мне нужно вставить int или None в поле myql int (которое является нулевым). Это мой код:

cur = db.cursor()
contents = [None, 3]
for element in contents:
    print(element)
    cur.execute('insert into test.new_test (blubb) values (%s)', element)
db.commit()

Когда я не использую None, а другой int, это работает. Я просто не понимаю, почему никто не работает, я получаю ошибку

pymysql.err.ProgrammingError: (1064, "У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с"% s ") в строке 1)

несмотря на все решения, которые я нашел для этого заявления, что% s способен обрабатывать None...
Кроме того, есть ли способ добавить весь список сразу (новая строка для каждой записи) без использования цикла for?

Теги:
pymysql

2 ответа

2
Лучший ответ

В mysql он должен быть NULL, поэтому вам нужно изменить его на:

cur = db.cursor()
contents = ['NULL', 3]
for element in contents:
    print(element)
    cur.execute('insert into test.new_test (blubb) values (%s)', element)
db.commit()

РЕДАКТИРОВАТЬ

Чтобы решить новую проблему, вы можете изменить ее на:

cur = db.cursor()
contents = [None, 3]
for element in contents:
    print(element)
    if element==None:
        cur.execute('insert into test.new_test (blubb) values (NULL)')
    else:
        cur.execute('insert into test.new_test (blubb) values (%s)', element)
db.commit()

Другой способ - изменить строгий режим, как он объясняет здесь.

  • 0
    если я это сделаю, я получу pymysql.err.InternalError: (1366, "Incorrect integer value: 'NULL' for column 'blubb' at row 1")
  • 0
    Содержание = ['', 3]?
Показать ещё 1 комментарий
0

Пожалуйста, замените NONE на NULL. Команда, поставленная на сервер MySQL, должна выглядеть так:

insert into test.new_test (blubb) values (NULL)

Где blubb является допустимым столбцом в таблице new_test и должен иметь значения NULL.

Ура,

  • 0
    Как бы я это сделал? Если я пытаюсь обменять None на «Null» или «», я получаю сообщение об ошибке ... (см. Другой ответ)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню