不能在mysql int字段中插入none

bweufnob  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(794)

我需要在mysql int字段中插入int或none(可以为null)。这是我的密码:

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服务器版本对应的手册,以获取在第1行“%s”附近使用的正确语法,
尽管我找到了所有的解决方案,说%s无法处理任何问题。。。
另外,是否有一种方法可以一次添加整个列表(为每个条目添加新行),而不使用for循环?

gdx19jrr

gdx19jrr1#

在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()

编辑
要解决新的isue,可以将其更改为:

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()

另一种方法是像这里解释的那样改变strict模式

js4nwp54

js4nwp542#

请将“无”替换为空。传递到mysql服务器的命令应该如下所示:

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

其中blubb是表new\u test中的有效列,并且必须允许空值。
干杯,

相关问题