Python PyMySQL插入NULL或字符串
我试图用PyMySQL插入一个字段(Python PyMySQL插入NULL或字符串,python,mysql,pymysql,Python,Mysql,Pymysql,我试图用PyMySQL插入一个字段(title),该字段可以是NULL或字符串。但它不起作用 query = """ INSERT INTO `chapter` (title, chapter, volume) VALUES ("%s", "%s", %d) """ cur.execute(query % (None, "001", 1)) cur.execute(query % ("Title", "001", 1)) 此代码将None插入数据库。如果删除第一个%s周围的双
title
),该字段可以是NULL
或字符串。但它不起作用
query = """
INSERT INTO `chapter` (title, chapter, volume)
VALUES ("%s", "%s", %d)
"""
cur.execute(query % (None, "001", 1))
cur.execute(query % ("Title", "001", 1))
此代码将None
插入数据库。如果删除第一个%s
周围的双引号,则会引发错误:
pymysql.err.InternalError: (1054, "Unknown column 'None' in 'field list'")
如何插入NULL?1)切勿对SQL使用字符串格式
2) 请尝试以下操作:
query = """
INSERT INTO `chapter` (title, chapter, volume)
VALUES (%s, %s, %s)
"""
cur.execute(query, (None, "001", 1))
按如下方式更改代码:
query = """INSERT INTO chapter(title, chapter, volume) VALUES (%s, %s, %s)"""
cur.execute(query, (None, "001", 1))
connection.commit()
令人惊叹的!现在没事了。谢谢!你说“永远不要对sql使用字符串格式”是什么意思?我是一个mysql初学者,做一些类似于OP.@scheisschiesser的事情,这可能会导致sql注入。因此,最好像上面的代码示例中那样使用参数绑定,如果您想在数字列中使用
None
,比如上面的volume
?哦……我已经为SQL使用字符串格式很长时间了……我想只要我使用bleach
模块来bleach.clean
任何输入都可以。错了吗?嗯,好吧,一年后的答案基本相同