Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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/66.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代码以将空值插入MySQL_Python_Mysql_Null - Fatal编程技术网

更正python代码以将空值插入MySQL

更正python代码以将空值插入MySQL,python,mysql,null,Python,Mysql,Null,我试图使用python将一些变量插入MySQL数据库。有时变量是字符串,有时是无 下面是我尝试的一个非常简化的版本: import MySQLdb as mdb f = "Bob" m = None l = "Smith" db = mdb.connect("blah blah blah") with db: cur.execute("INSERT INTO name (first, middle, last) VALUES ('{0}', '{1}', '{2}')".format(

我试图使用python将一些变量插入MySQL数据库。有时变量是字符串,有时是无

下面是我尝试的一个非常简化的版本:

import MySQLdb as mdb
f = "Bob"
m = None
l = "Smith"

db = mdb.connect("blah blah blah")
with db:
    cur.execute("INSERT INTO name (first, middle, last) VALUES ('{0}', '{1}', '{2}')".format(f, m, l))
问题是它将“None”作为字符串而不是实际的空值插入

我可以通过将最后一行更改为:

cur.execute("INSERT INTO name (first, middle, last) VALUES (%s, %s, %s)", (f, m, l))
但我相信这会使代码容易受到MySQL注入攻击。
如果有人知道使用.format方法的正确方法,我将不胜感激。

插入数据的预期方法如下:

cur.execute("INSERT INTO name (first, middle, last) VALUES (%s, %s, %s)", (f, m, l))

像第一个示例中那样格式化字符串会使应用程序易受SQL注入攻击。

否,字符串格式化会使您易受攻击。以第二种方式传递价值观是人们所期待的。谢谢-我很高兴我在早些时候为这个愚蠢的问题得到了道歉。这不是一个愚蠢的问题。知道如何防范SQL注入非常重要。在这种情况下,已弃用的
%
.format
都不起作用。