我试图使用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))
问题在于它插入了“无”和“无”。作为字符串而不是实际的NULL值。
我可以通过将最后一行更改为:
来解决问题cur.execute("INSERT INTO name (first, middle, last) VALUES (%s, %s, %s)", (f, m, l))
但我相信这会让代码容易受到MySQL注入攻击。 如果有人知道使用.format方法的正确方法,我将非常感激。
答案 0 :(得分:1)
插入数据的预期方法如下:
cur.execute("INSERT INTO name (first, middle, last) VALUES (%s, %s, %s)", (f, m, l))
像第一个示例中那样格式化字符串会使您的应用程序容易受到SQL注入的攻击。</ p>