Thứ Bảy, 1 tháng 6, 2024

61. Quản lý sinh viên Python MySQL phần 2

Chúng ta đã tạo ra Database tên là sinhviendatabase. Muốn lưu trữ dữ liệu của sinh viên, chúng ta cần phải tạo ra một bảng tên là SinhVien

Chúng ta sẽ sử dụng lệnh CREATE TABLE để tạo bảng SinhVien. Tuy nhiên như phần trước chúng ta đã đề cập, việc tạo Database và Table cần được kiểm tra rằng database hay table đã có chưa, nếu chưa có thì tạo mới, nếu đã có thì sẽ không làm gì. Vì vậy chúng ta sẽ cần "làm việc" luôn với lệnh CREATE DATABASE mà chúng ta đang tạm thời khóa lại trong phần trước.

Mặt khác, theo đúng tinh thần "hàm hóa", cái gì biến thành hàm được thì chúng ta sẽ "hàm hóa" hết, vì vậy chúng ta sẽ tạo hai hàm là taoCSDL() và taoBang()

Hàm tạo mới cơ sở dữ liệu taoCSDL()


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")


Hàm tạo mới bảng taoBang()

Lưu ý phải có lệnh mycursor.execute("USE sinhviendatabase"), nếu không chúng ta sẽ nhận báo lỗi. Kiểu như chương trình nói rằng: "Bắt tôi đi lên rừng để tìm mực, bạch tuộc...thì làm sao tôi tìm được!?". Chúng ta cần qui định Database nào sử dụng để thao tác table.

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))")

Và đây là code của class QuanLySinhVienSQL() sau khi đã thêm hai hàm mới.

 

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


class QuanLySinhVienSQL:

    def 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))")




Sử dụng PyCharm, chúng ta bấm Run để thử class QuanLySinhVienSQL() có lỗi gì không.


 




Vậy là ổn. Chúng ta sẽ gọi hai hàm trên trong file MainSQL.py

Đây là code của MainSQL.py sau khi thêm hai lời gọi hàm

 

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", "Ducle12345678")

mycursor = mydb.cursor()

#mycursor.execute("CREATE DATABASE sinhviendatabase")
qlsv.taoCSDL(mycursor)
qlsv.taoBang(mycursor)
qlsv.nhapSinhVien()

 

Chạy thử lần thứ nhất. Table chưa được tạo.

 


 

Bấm Run để chạy thử lần thứ hai. Bảng SinhVien đã được tạo 



 

Chúng ta sẽ tiếp tục trong phần sau


Phần tiếp theo


Phần trước

 

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

Đăng nhận xét