Я пытаюсь вставить некоторые переменные в базу данных MySQL, используя python. Иногда переменные будут строками, а иногда они будут 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, я был бы очень признателен.