无法将None插入到mysql int字段中?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (328)

我需要插入一个int或None到MySql 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'附近使用正确的语法')',”

提问于
用户回答回答于

在MySQL中,它应该是空的,所以你需要将它更改为:

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()
用户回答回答于

请用NULL替换NONE。传递给MySQL服务器的命令应如下所示:

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

其中blubb是表new_test中的有效列,并且必须允许NULL值。

扫码关注云+社区

领取腾讯云代金券