ฉันกำลังพยายามแทรกตัวแปรบางตัวลงในฐานข้อมูล MySQL โดยใช้ python บางครั้งตัวแปรจะเป็นสตริงและบางครั้งอาจเป็นไม่มี
สิ่งที่ฉันกำลังพยายามในเวอร์ชันที่เรียบง่ายอย่างมากอยู่ด้านล่าง:
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 ฉันจะขอบคุณมาก