Мне нужно вставить 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?
В 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()
Другой способ - изменить строгий режим, как он объясняет здесь.
Пожалуйста, замените NONE на NULL. Команда, поставленная на сервер MySQL, должна выглядеть так:
insert into test.new_test (blubb) values (NULL)
Где blubb является допустимым столбцом в таблице new_test и должен иметь значения NULL.
Ура,
pymysql.err.InternalError: (1366, "Incorrect integer value: 'NULL' for column 'blubb' at row 1")