Chúng ta sẽ tiếp tục ứng dụng Quản lý sinh viên dùng Python và MySQL
Phần này chúng ta sẽ thảo luận về hàm tìm kiếm theo tên và hàm cập nhật thông tin sinh viên.Hàm tìm kiếm sinh viên theo tên.
Hàm này giúp chúng ta có thể tìm kiếm tất cả các sinh viên trung tên, ví dụ tất cả các sinh viên tên Anh, hay tất cả các sinh viên tên Hung...Mặt khác nó cũng giúp chúng ta tìm ra được một sinh viên mà ta không nhớ chính xác tên ví dụ Hung Anh hay Hoang Anh...?
Nói chung hàm sẽ gần như hàm tìm sinh viên theo ID nhưng chúng ta sử dụng LIKE.
def findByName(self, mycursor):
tenSV = input("Nhap Ten cua sinh vien muon tim: ")
try:
slsv = self.soLuongSinhVien(mycursor)
if (slsv > 0):
sql = "SELECT * FROM SinhVien WHERE ten LIKE %s"
val = ('%'+tenSV+'%',)
mycursor.execute(sql, val)
row = mycursor.fetchone()
while row is not None:
print(row)
row = mycursor.fetchone()
except Error as e:
print(e)
Đây là class QuanLySinhVienSQL() sau khi thêm hàm findByName().
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 ")
def soLuongSinhVien(self, mycursor):
try:
mycursor.execute("SELECT count(ID) FROM SinhVien")
row = mycursor.fetchone()
number_of_rows = row[0]
except Error as e:
print(e)
return number_of_rows
def findByID(self, mycursor):
idSV = input("Nhap ID cua sinh vien muon tim: ")
try:
slsv = self.soLuongSinhVien(mycursor)
if (slsv > 0):
sql = "SELECT * FROM SinhVien WHERE ID = %s"
val = (idSV,)
mycursor.execute(sql, val)
row = mycursor.fetchone()
while row is not None:
print(row)
row = mycursor.fetchone()
except Error as e:
print(e)
def findByName(self, mycursor):
tenSV = input("Nhap Ten cua sinh vien muon tim: ")
try:
slsv = self.soLuongSinhVien(mycursor)
if (slsv > 0):
sql = "SELECT * FROM SinhVien WHERE ten LIKE %s"
val = ('%'+tenSV+'%',)
mycursor.execute(sql, val)
row = mycursor.fetchone()
while row is not None:
print(row)
row = mycursor.fetchone()
except Error as e:
print(e)
Chúng ta sẽ cần gọi hàm trong file MainSQL.py để thử kết quả.
Hàm cập nhật thông tin sinh viên
Ta sẽ viết hàm cập nhật thông tin bằng cách sử dụng lệnh UPDATE. Tuy nhiên không đơn giản chỉ một lệnh Update là xong vì chúng ta cần xác định sẽ cập nhật thông tin gì: Tên, Địa Chỉ....Chúng ta sẽ cùng nhau update ...tất cả một lần! Nếu muốn, bạn có thể sử dụng IF để tách ra trong chương trình của riêng bạn. Đây là code của hàm updateSinhVien()
def updateSinhVien(self, mycursor):
tiep_tuc = "Y"
while tiep_tuc == "Y":
idSV = input("Nhap ID cua sinh vien muon update: ")
tenSV = input("Nhap Ten cua sinh vien: ")
gioitinhSV = input("Nhap Gioi Tinh cua sinh vien: ")
diachiSV = input("Nhap Dia Chi cua sinh vien: ")
nganhhocSV = input("Nhap Nganh Hoc cua sinh vien: ")
try:
sql = " UPDATE SinhVien SET ten = %s, gioitinh = %s, diachi = %s, nganhhoc = %s WHERE id = %s "
val = (tenSV,gioitinhSV, diachiSV, nganhhocSV, idSV)
mycursor.execute(sql,val)
except Error as error:
print(error)
tiep_tuc = input("Tiep tuc ? Y/N ")
Để thực thi, chúng ta cần thêm lời gọi hàm trong file MainSQL.py
Đây là code của MainSQL.py
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):
qlsv.updateSinhVien(mycursor)
mydb.commit()
print("\nCap nhat sinh vien thanh cong!")
elif (key == 3):
qlsv.deleteById(mycursor)
mydb.commit()
print("\nXoa sinh vien thanh cong!")
elif (key == 4):
qlsv.findByName(mycursor)
print("\nKet qua tim kiem!")
elif (key == 5):
qlsv.showSinhVien(mycursor)
so_luong = str(qlsv.soLuongSinhVien(mycursor))
print("So Sinh Vien: "+so_luong)
print("\nDanh sach sinh vien!")
elif (key == 6):
qlsv.findByID(mycursor)
print("\nTim kiem sinh vien theo ID!")
elif (key == 0):
print("\nDa thoat khoi chương trinh thanh cong!")
mycursor.close()
mydb.close()
break
else:
print("\nKhong co chuc nang nay!")
Phần tiếp theo
Không có nhận xét nào:
Đăng nhận xét