更正 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 注入的攻击。
我正在尝试使用 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 注入的攻击。