更正python代码以将空值插入MySQL
我试图使用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(
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
都不起作用。