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

Correct python code to insert NULL value into MySQL

我正在尝试使用 python 将一些变量插入到 MySQL 数据库中。有时变量是字符串,有时是 None.

我正在尝试的一个非常简化的版本如下:

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' 作为字符串而不是实际的 NULL 值插入。

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

来解决问题
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 注入的攻击。