我需要在MySql int字段(可为空)中插入int或None。 这是我的代码:
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时,此方法有效。我只是不明白,为什么None不起作用,我得到了错误
pymysql.err.ProgrammingError:(1064,“您的SQL错误 句法;检查与您的MySQL服务器版本相对应的手册 为在第1行“)附近使用'%s)'的正确语法,
尽管我找到了所有解决方案,但是说%s可以处理None ...
另外,也许有一种方法可以立即添加整个列表(每个条目都有一个新行),而无需使用for循环?
答案 0 :(得分: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()
另一种方法是更改严格模式,如它解释here
答案 1 :(得分:0)
请用NULL代替NONE。传递给MySQL服务器的命令应如下所示:
insert into test.new_test (blubb) values (NULL)
blubb是表new_test中的有效列,并且必须允许使用NULL值。
干杯