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
Không có nhận xét nào:
Đăng nhận xét