1. DELETE bản ghi trong MySQL với Python

Câu lệnh DELETE được sử dụng để xóa các bản ghi hiện có trong một bảng. Các bản ghi khi bị xóa sẽ không thể được thao tác truy vấn SELECT (vì bản ghi bị xóa sẽ không còn tồn tại trong một bảng). Khi xóa một bản ghi ta cần xác định được bản ghi cần xóa – việc xác định này thường thông qua mệnh đề WHERE và xác định dựa trên trường id.

Trong Python, để thực hiện xóa đi một bản ghi trong bảng MySQL chúng ta cần thực hiện hai bước sau:

  1. Kết nối Python tới MySQL bằng hàm mysql.connector.connect().
  2. Thực hiện lấy ra dữ liệu từ một bảng thông qua câu truy vấn “DELETE FROM table_name WHERE condition” trong đó:
    • DELETE FROM table_name là việc chọn ra tên bảng có bản ghi cần bị xóa.
    • WHERE condition là các điều kiện chọn ra bản ghi cần xóa trong bảng.

Ví dụ dưới đây, thực hiện xóa đi bản ghi có id = 7  có trong bảng “tbl_user” trong cơ sở dữ liệu có tên “laptrinhtudau” như sau:

import mysql.connector

try:
    # Ket noi toi MySQL
    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="laptrinhtudau"
    )
    # Tao doi tuong con tro trong MySQL
    mycursor = mydb.cursor()

    # Truy van xoa ban ghi co id = 7 trong bang "tbl_user"
    sql = "DELETE FROM tbl_user WHERE id = 7"

    # Thuc thi cau truy van 
    mycursor.execute(sql)
    # Xac thuc viec xoa ban ghi khoi bang "tbl_user"
    mydb.commit()
    print(mycursor.rowcount, "ban ghi da xoa khoi bang!")
except:# Truong hop co loi xoa ban ghi trong bang
    print("Khong the xoa ban ghi trong bang!")

Kết quả:

1 ban ghi da xoa khoi bang!

Lưu ý: Câu lệnh mydb.commit() là bắt buộc phải có khi chúng ta muốn xóa bản ghi khỏi một bảng. Nếu như không có câu lệnh mydb.commit() thì bảng có bản ghi cần xóa sẽ không được thay đổi!

2. DELETE tất cả bản ghi trong MySQL với Python

Ở phần trên, chúng ta mới chỉ thực hiện xóa đi một bản ghi theo một điều kiện được chỉ định.Ví dụ điều kiện chỉ định để xóa đó là bản ghi có id = 7. Trong một số trường hợp, chúng ta cần xóa đi toàn bộ các bản ghi có trong bảng (có thể là do dữ liệu chưa đúng đắn, hoặc bảng không còn sử dụng nữa).

Khi đó nghĩa là, ta cần xóa đi toàn bộ bản ghi có trong bảng. Để thực hiện được việc xóa toàn bộ bản ghi có trong bảng khi đó ta chỉ cần thực hiện câu lệnh truy vấn “DELETE FROM table_name” – câu lệnh truy vấn này sẽ bỏ qua mệnh đề WHERE.

Ví dụ dưới đây, xóa toàn bộ các bản ghi có trong bảng “tbl_user” trong cơ sở dữ liệu “laptrinhtudau” như sau:

import mysql.connector

try:
    # Ket noi toi MySQL
    mydb = mysql.connector.connect(
        host="localhost",
        user="root",
        password="",
        database="laptrinhtudau"
    )
    # Tao doi tuong con tro trong MySQL
    mycursor = mydb.cursor()

    # Truy van xoa tat ca ban ghi trong bang "tbl_user"
    sql = "DELETE FROM tbl_user"

    # Thuc thi cau truy van 
    mycursor.execute(sql)
    # Xac thuc viec xoa ban ghi khoi bang "tbl_user"
    mydb.commit()
    print(mycursor.rowcount, "ban ghi da xoa khoi bang!")
except:# Truong hop co loi xoa ban ghi trong bang
    print("Khong the xoa ban ghi trong bang!")

Kết quả:

6 ban ghi da xoa khoi bang!