Chủ Nhật, 2 tháng 6, 2024

63. Quản lý sinh viên Python MySQL phần 4

Trong phần này, chúng ta sẽ cùng nhau viết một hàm xóa tên sinh viên khỏi bảng SinhVien.

Chúng ta sẽ sử dụng lệnh DELETE để viết hàm xóa Hàm sẽ có tên là deleteById().

Đây là hàm deleteById()

 

def deleteById(self, mycursor):
        tiep_tuc = "Y"
        while tiep_tuc == "Y":
            idSV = input("Nhap ID cua sinh vien muon xoa: ")

            try:

                sql = "DELETE FROM SinhVien WHERE ID = %s"
                val = (idSV,)
                mycursor.execute(sql,val)
            except Error as error:
                print(error)

            tiep_tuc = input("Tiep tuc ? Y/N ")

 

Chúng ta sẽ thêm hàm vào class QuanLySinhVienSQL() như sau

 

from SinhVienSQL import SinhVienSQL
import mysql.connector
from mysql.connector import Error


class QuanLySinhVienSQL:

    # nhapSinhVien(self):
            #print("Hello")

    def mydbConnection(self, host_name, user_name, user_password):
        connection = None
        try:
            connection = mysql.connector.connect(
                host=host_name,
                user=user_name,
                passwd=user_password
            )
            print("Connection to MySQL DB successful")
        except Error as e:
            print(f"The error '{e}' occurred")

        return connection

    def taoCSDL(self, mycursor):
        # Kiem tra database co ton tai hay khong
        mycursor.execute("SHOW DATABASES")
        databases = mycursor.fetchall()

        database_exists = False
        for database in databases:
            if 'mydatabase' in database:
                database_exists = True
                break

        if database_exists:
            print("Database Ton Tai")
        else:
            print("Database Khong Ton Tai")
            mycursor.execute("CREATE DATABASE sinhviendatabase")

    def taoBang(self, mycursor):
        # Kiem tra table co ton tai hay khong
        mycursor.execute("USE sinhviendatabase")
        mycursor.execute("SHOW TABLES")
        tables = mycursor.fetchall()

        table_exists = False
        for (table,) in tables:
            if ('sinhvien',) in tables:
                print("Table Ton Tai!!")
                table_exists = True
                break

        if table_exists:
            print("Table Ton Tai")
        else:
            print("Table Khong Ton Tai")
            mycursor.execute(
                "CREATE TABLE SinhVien (id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, ten VARCHAR(255), gioitinh VARCHAR(100), diachi VARCHAR(255), nganhhoc VARCHAR(100))")

    def nhapSinhVien(self, mycursor):
        tiep_tuc = "Y"
        while tiep_tuc == "Y":
            tenSV = input("Nhap Ho va Ten cua sinh vien: ")
            gioitinhSV = input("Nhap Gioi Tinh sinh vien: ")
            diachiSV = input("Nhap Dia Chi cua sinh vien: ")
            nganhhocSV = input("Nhap Nganh Hoc sinh vien: ")
            try:
                sql = "INSERT INTO SinhVien (ten, gioitinh, diachi, nganhhoc) VALUES (%s, %s, %s, %s)"
                val = (tenSV, gioitinhSV, diachiSV, nganhhocSV)
                mycursor.execute(sql, val)
            except Error as error:
                print(error)

            tiep_tuc = input("Tiep tuc ? Y/N ")



    def showSinhVien(self, mycursor):
        try:

            mycursor.execute("SELECT * FROM SinhVien")
            row = mycursor.fetchone()

            while row is not None:
                print(row)
                row = mycursor.fetchone()

        except Error as e:
            print(e)

    def deleteById(self, mycursor):
        tiep_tuc = "Y"
        while tiep_tuc == "Y":
            idSV = input("Nhap ID cua sinh vien muon xoa: ")

            try:

                sql = "DELETE FROM SinhVien WHERE ID = %s"
                val = (idSV,)
                mycursor.execute(sql,val)
            except Error as error:
                print(error)

            tiep_tuc = input("Tiep tuc ? Y/N ")



 

Để thực thi hàm deleteById() chúng ta cần gọi nó trong file MainSQL.py như sau

 

import mysql.connector
from QuanLySinhVienSQL import QuanLySinhVienSQL

# khởi tạo một đối tượng QuanLySinhVienSQL để quản lý sinh viên
qlsv = QuanLySinhVienSQL()
mydb = qlsv.mydbConnection("localhost", "root", "password của bạn")
mycursor = mydb.cursor()
qlsv.taoCSDL(mycursor)
qlsv.taoBang(mycursor)

while (1 == 1):
    print("***********************MENU***********")
    print("**  1. Them sinh vien.                                  **")
    print("**  2. Cap nhat thong tin sinh vien bang ID   **")
    print("**  3. Xoa sinh vien theo ID.                        **")
    print("**  4. Tim kiem sinh vien theo ten.               **")
    print("**  5. Hien thi danh sach sinh vien.              **")
    print("**  6. Tim kiem sinh vien theo ID.                **")
    print("**  0. Thoat                                              **")
    print("**************************************")

key = int(input("Nhap tuy chon de bat dau chương trinh: "))
    if (key == 1):
        qlsv.nhapSinhVien(mycursor)
        mydb.commit()
        print("\nThem sinh vien thanh cong!")


    elif (key == 2):
        print("\nCap nhat sinh vien thanh cong!")

    elif (key == 3):
        qlsv.deleteById(mycursor)
        mydb.commit()

        print("\nXoa sinh vien thanh cong!")


    elif (key == 4):
        print("\nKet qua tim kiem!")


    elif (key == 5):
        qlsv.showSinhVien(mycursor)
        print("\nDanh sach sinh vien!")


    elif (key == 6):
        print("\nTim kiem sinh vien theo ID!")

    elif (key == 0):
        print("\nDa thoat khoi chương trinh thanh cong!")
        break


    else:
        print("\nKhong co chuc nang nay!")





Bấm Run để chạy MainSQL.py, chúng ta đã có thể xóa một record bất kỳ bằng cách cung cấp cho chương trình ID của sinh viên.

 



 

Phần tiếp theo


Phần trước

 

Không có nhận xét nào:

Đăng nhận xét