在操作 MySQL 数据表时,可能需要删除特定行。下面示例演示如何用 Python 的 mysql-connector
库执行 DELETE
语句,并确保安全性。
1. 删除指定记录
以下示例演示了如何删除 customers
表中 address
等于 "Mountain 21"
的记录:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "DELETE FROM customers WHERE address = 'Mountain 21'"
mycursor.execute(sql)
mydb.commit() # 提交修改,否则不会生效
print(mycursor.rowcount, "record(s) deleted")
注意:在执行删除操作后,必须调用 mydb.commit()
才能将删除操作写入数据库。
2. 使用 WHERE 子句
WHERE
子句用于指定要删除的记录。如果省略 WHERE
,则会删除整张表的所有记录。因此,要非常小心地在 DELETE
语句中加上适当的 WHERE
。
3. 防止 SQL 注入:使用占位符
若要删除的条件来自用户输入,必须采取安全措施,防止 SQL 注入攻击。可用占位符 %s
替代直接拼接字符串:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "DELETE FROM customers WHERE address = %s"
val = ("Yellow Garden 2",)
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, "record(s) deleted")
以上写法能自动转义变量,避免恶意注入破坏数据库。
建议与提醒
- 执行
DELETE
操作前最好先备份或确保必要的数据安全。 - 请谨慎使用不带
WHERE
的DELETE
,否则可能清空全部记录。 - 通过占位符传递变量以避免 SQL 注入。
通过本篇教程,你即可使用 Python 程序对 MySQL 数据表中的记录安全地执行删除操作。