Python+MySQL:删除表中记录的基本操作

在操作 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 操作前最好先备份或确保必要的数据安全。
  • 请谨慎使用不带 WHEREDELETE,否则可能清空全部记录。
  • 通过占位符传递变量以避免 SQL 注入。

通过本篇教程,你即可使用 Python 程序对 MySQL 数据表中的记录安全地执行删除操作。