Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyMySQL插入NULL或字符串_Python_Mysql_Pymysql - Fatal编程技术网

Python PyMySQL插入NULL或字符串

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周围的双

我试图用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
周围的双引号,则会引发错误:

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
任何输入都可以。错了吗?嗯,好吧,一年后的答案基本相同